Fix IntervalDtype Bugs and Inconsistencies
- [X] closes #18980
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

Summary:
- `IntervalDtype(*)` now returns `True` when compared against `'interval'` and `IntervalDtype()` regardless of subtype
- `IntervalDtype(*)` now returns `'interval'` regardless of subtype
   - `str(IntervalDtype(*))` still displays subtype information, e.g. `'interval[int64]'`
- Cleaned up miscellaneous tests related to `IntervalDtype`
  