ENH: DataFrame.style sparsified MultiIndex
- [x] closes #11655
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

[Notebook comparing `DataFrame._html_repr_` to `DataFrame.style`](https://gist.github.com/609c398f814b4a505bf4f406670e457e)

I think we're identical for non-truncated DataFrames. That' has not been implemented in `Styler` yet.

Along the way I noticed two other things that ended up needing fixing.
1. DataFrame.columns.names were not displayed
2. CSS classes weren't being assigned correctly to row labels.

The fixes ended up being pretty intertwined, so I've put them in a single PR. Unfortunately, the commits are a bit jumbled as well :/
