MultiIndex union/intersection with non-object other
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

ATM if we call MultiIndex.union with e.g. a Float64Index, we get `ValueError: Buffer dtype mismatch, expected 'Python object' but got 'double'` from `lib.fast_unique_multiple`.  This PR changes that to raise NotImplementedError with a reasonable message, but we could alternatively return `self.to_flat_index().union(other)`

I prefer making the user do to_flat_index on their own because this seems like something that would often be reached by accident.
gentle ping; we're on the verge of being rid of _ndarray_values thanks