Clean multiindex keys
 - [x] closes #15452
 - [x] tests added / passed
 - [x] passes ``git diff master | flake8 --diff``
 - [x] whatsnew entry

Most of the change to code is mere refactoring (the small change in ``pandas/core/frame.py`` can be undone once we decide about #15438), but I did suppress three obsolete (the same job [is already done](https://github.com/toobaz/pandas/blob/clean_multiindex_keys/pandas/core/indexing.py#L1076) in the right way in ``_getitem_iterable``) and buggy [lines](https://github.com/pandas-dev/pandas/blob/master/pandas/core/indexing.py#L1544) which actually not only caused #15452, but were the real explanation for #15424.

As a side consequence, generators can now be used to index a ``MultiIndex``. This is not documented, as far as I know, but it was already possible with a flat ``Index``, and it was [actually also tested](https://github.com/pandas-dev/pandas/blob/master/pandas/tests/series/test_indexing.py#L270), so I added tests for ``MultiIndex`` too and to setitem (except that not all of them currently work). Once this PR goes through, I plan to open three separate issues for
- the failing tests with setitem and generators (of boolean values)
- ``df.loc[['missing', 'keys'], :]``, which still erroneously returns an empty ``DataFrame`` rather than raising (as ``df.loc[['missing', 'keys']]`` does)
- [my proposal](https://github.com/pandas-dev/pandas/issues/15452#issuecomment-281542685) about a change in behaviour for missing keys

Feel free to tell me if any of this is not worth discussing.