Tslibs offsets immutable
This is the big hurdle towards making DateOffsets immutable.

- Make tslibs.offsets._BaseOffset a cython class, define `n` and `normalize` to be readonly
- Update tests that try to alter offsets inplace
- Poke at things until pickle tests stop failing <-- the part with the kludge

I'm not wild about the hack in pickle_compat, but haven't found any other way to avoid `TestCommon.test_pickle_v0_15_2` failing with:

```
cls = <class 'pandas.tseries.offsets.YearBegin'>, base = <type 'object'>, state = None

    def _reconstructor(cls, base, state):
        if base is object:
>           obj = object.__new__(cls)
E           TypeError: object.__new__(YearBegin) is not safe, use pandas._libs.tslibs.offsets._BaseOffset.__new__()
```

After this there will then be a) a bunch of other attributes to make readonly and b) the optimizations that are available once DateOffsets are immutable.  But first we need to either OK the pickle_compat hack or find another way around.