COMPAT: pandas-compat
So a number of downstream projects have to deal with pandas compat thru various versions. This mainly involves fairly unsightly code like this (from dask).

```
# XXX: Pandas uses release branches > 0.19.0, which doesn't play well with
# versioneer, since the release tags aren't ancestors of master. As such, we
# need to use this hacky awfulness to check if we're > 0.19.2.
if PANDAS_VERSION >= '0.20.0':
    from pandas.util import hash_pandas_object
elif PANDAS_VERSION not in ('0.19.1', '0.19.2') and PANDAS_VERSION > '0.19.0+460':
    from pandas.tools.hashing import hash_pandas_object
else:
    from pandas.types.common import (is_categorical_dtype, is_numeric_dtype,
                                     is_datetime64_dtype, is_timedelta64_dtype)
    from pandas.lib import is_bool_array

    if PANDAS_VERSION == '0.19.2':
        from pandas._hash import hash_object_array
    else:  # 0.19.0 and 0.19.1
        def hash_object_array(x, hash_key, encoding):
            return np.array([hash(i) for i in x], dtype=np.uint64)
```

So might be useful for pandas to create a companion library ``pandas-compat`` that is pretty much a single file with all of the compat things in a top-level namespace, so projects could just do:

```
import pandas_compat as pdc

pdc.hash_object_array(...)
pdc.infer_dtype(...)
pdc.DatetimeTZDtype
```

etc. IOW it will have all of the compat / try-excepts. So this would involve one more round of projects changing to this new compat layer. 

The advantage would be that this would allow projects to be pandas back-compat for using pandas developer API's. It would be independently released (though prob simultaneously with pandas major releases).

a partial list of projects that might benefit from this:

``pandas-gbq``
``pandas-datareader``
``dask``
``pyarrow``
``geopandas``
``statsmodels``

cc @wesm 
cc @mrocklin
cc @TomAugspurger 
cc @jorisvandenbossche 
cc @cpcloud 