API: Implement new indexing behavior for intervals
- [X] closes #16316, closes #23705, closes #25087, closes #25860, closes #24931
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

I left the `test_interval.py` and `test_interval_new.py` files separate for now, in order to make it more obvious what is being changed.  Will condense these files in a follow-up.