Cut/paste (most) remaining tz funcs to tslibs/timezones
We're very nearly done with `tslibs.timezones`.  I had hoped to bring over the remaining functions in smaller chunks, but this turns out to be the smallest independent subset that contains `_get_dst_info` and `maybe_get_tz`.

Getting `_get_dst_info` and `maybe_get_tz` separated is a milestone because it allows us to move `tseries.frequencies.Resolution` and related functions into cython without having a dependency on `tslib`.  This in turn gets the dependency on `khash` out of `tslib`.  A few more nice things become feasible.

This is _almost_ pure cut/paste.  The only change I made was replacing `isinstance(tz, string_types)` with `is_string_object(tz)`.  If requested, I'll do a follow-up to de-privatize the names.

`timezones` is within spitting distance of being valid python.  Getting it over that hump would allow linting and coverage that is tough as it is.

Note that if/when #17363 is merged, a bunch of residual imports in `tslib` can be cleaned up.

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