REF: unify Index union methods
- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Sits on top of #38373 which focuses on intersection.

@simonjayhawkins this changes corner-case behavior for IntervalIndex.union, which we already changed in #38282 for 1.2.0.  I think this is unambiguously More Correct.  Question for you: should we try to get it in to 1.2.0 to avoid back-to-back behavior changes?