API/BUG: DatetimeIndex correctly localizes integer data 
closes #20997 
closes #20964
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

I did a little refactoring of `Datetime.__new__` that converts passed data but made it easier to fix this issue. I had to modify some methods (join, normalize, delete, insert) and tests that weren't assuming integer data weren't epoch timestamps.