BUG: names on union and intersection for Index were inconsistent (GH9943 GH9862)
xref #9943
closes #9862 
- [x] tests added / passed
  - Added tests to check names on unions when Index has different values
  - Fixed test for ranges with unions
  - Added tests for all index types for corner cases for union, difference
  - Added tests so that `index.intersection(empty_index)==index.difference(index)`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Also fixes bug in `Index.difference` when computing `index.difference(index)`
