BUG/CLN: MI now checks level & label compatibility
Via verify_integrity kwarg. Internals all pass False.I don't think I've missed anything / passed verify_integrity=True where
it ought not to be.

Fixes #5213.

Clearly this adds a (likely small) perf hit - but should only occur
from external MI calls that specifically call the constructor with
levels and labels (for example, doesn't occur with `from_arrays` or
`from_tuples`). For 0.14 I'll have to do it differently, but this should
work for 0.13.

Changed it to validate pickles too.
 people okay with this? @wesm?
 good by me
 Performance impact probably minimal so this is fine to go in. 
 Okay I'll rebase. I might add something to the docs about how setting levels or labels triggers a new round of validation.
