CLN: MultiIndex.union align with Index.union()
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

Similar to MultiIndex.intersection()

Stumbled over a issue in the maybe_match_names function. Can not return plain None, because MultiIndex.rename can not handle this.

cc @jbrockmendel 
Can Index.union be updated to use the same code pattern? We could rewrite ``_get_reconciled_name_object`` to accept the result as additional input, this would simplify a few things for us and make both cases more  similar. 

Edit: That is probably not that good of an idea. We are missing something like ``_wrap_setop_result`` to unify both cases this looks like a bug fix no? e.g. let's add a whatsnew and merge (1.3) Only technically a bug, got in a few day ago only on master. technically because this function was only used for intersection before, which could not reach this case. So I think no need for whatsnew? thanks 