BUG: Fix IntervalIndex constructor inconsistencies
- [X] closes #18421
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

Regarding item 3) in the issue, which deals with the dtype of `IntervalIndex([])`:  I implemented this so that the default behavior is to have `object` dtype.  However, if the empty data has a specific dtype, e.g. `np.array([], dtype='int64')`, it will use that dtype instead.