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

closes #7683
 
Move ``__iter__`` from ``DatatimeIndex/PeriodIndex`` to ``DatetimeIndexOpsMixin``
Adding perf tests for change
the change fixes setup time and memory for iterator but it uses a bit more time when iterating over the whole list. the first two tests cover full iteration while the last two cover partial iteration.