BUG: Do not round DatetimeIndex nanosecond precision when iterating
- [x] closes #19603
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

~~This issue was actually very specific to localizing a `DatetimeIndex` with `datetime.timezone.utc`~~

```
# On master
In [1]: import pandas as pd

In [2]: datetimeindex = pd.DatetimeIndex(["2018-02-08 15:00:00.168456358"], tz='UTC')

In [3]: list(datetimeindex)[0] == datetimeindex[0] # returned False with datetime.timezone.utc
Out[3]: True 
```

~~I realize our timezone support relies heavily on pytz and dateutil, but I am curious how much support we have for `datetime.timezone` objects.~~

So the actual issue was that `datetime.timezone.utc` is (rightly) considered a fixed offset, and the code path was calculating the new value with Python `datetimes` and `timedeltas` which doesn't yet support nanosecond resolution. 

