REF: move range-generation functions to EA mixin classes
With the DatetimeArray range-generating functions moved, we are finally able to move `shift`, and in turn `__add__`, `__sub__`, etc.  

Two non-trivial changes made during the move process, see inline comments.

Upcoming commits will add docstrings and port tests.  ATM many tests are a PITA bc the Array contructors don't know how to handle lists of strings.  Trying to find a way to implement that in `__new__` without having it become a total mess.