Refactor timezones functions out of tslib
`_libs.tslib` is over 5k lines and is imported by a bunch of other modules including `_libs.lib`.  It looks like it was pasted together from a bunch of older files.  There are a handful of areas where significant chunks can be refactored out in complexity-reducing (and testability-increasing) ways.  This is the first one: timezones.  (Next up: parsing (and gathering parsing code dispersed across pandas))

timezones.pyx has no other dependencies within pandas, helping to de-tangle some of the `_libs` modules

Code in timezones is used in both `_libs.tslib` and `_libs.period`, and a bit in `_libs.index`.

This is one of several steps in making _libs.period not need to import from non-cython code and
ideally not need to import `tslib` (though `NaT` makes that tough).  See existing comments
in `_libs.__init__` on why this is desireable.

This is the first of several independent pieces to be split off of `tslib`.

There are also several notes on functions that appear to be unused and may be ready for removal.

Removes `datetime_helper` dependency from most of `_libs`, as it is somehow slower than a plain cython version.  In cases where C can be replaced by idiomatic cython without hurting performance, I'm calling that a win.

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry
