BUG: DatetimeIndex.__iter__ creates a temp array of Timestamp (GH7683)
closes #7683 

needs:
- tests
- release note needs to go in v0.15.0.txt
- needs a vbench (in vb_suite)
 Better to add `DatetimeIndexOpsMixin` in base.py, and remove `__iter__` from `DatetimeIndex` and `PeriodIndex`.
 `DatetimeIndex` behaves a bit differently from `PeriodIndex` when boxing. Instead of passing raw values into `_box_func`, it firstly reinterprets them as integers (`asi8`). Could this be made consistent?
 Believe so like `DatetimeIndexOpsMixin.asobject` (and `_box_values`) does. `PeriodIndex._box_func` should accept `asi8` and return correct object representation.
 @yrlihuan I see you did a new PR, that's fine, normally you don't need to do that though (just update the existing on), making sure you force push

see here: https://github.com/pydata/pandas/wiki/Using-Git
