PERF/BUG: reimplement MultiIndex.remove_unused_levels
* Add a large random test case for remove_unused_levels that failed the
previous implementation

* Fix #16556, a performance issue with the previous implementation

* <strike>Add inplace functionality</strike>

* Always return (if not inplace) at least a view instead of the original
index