BUG: set_levels set illegal levels.
- [x] closes #xxxx
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

`MultiIndex.set_levels`, when passed in illegal level values, raises an error.
When `inplace=True`, though, the illegal level values are still accepted. This
commit fixes that behavior by checking that the proposed level values are legal
before setting them.

Duplicate of https://github.com/pydata/pandas/pull/14236, which kept failing the build with Qt errors. This is a retry with a fresh Travis build. Assuming it passes, I'll close https://github.com/pydata/pandas/pull/14236 in favor of this PR.
