offsets cleanup
This is mostly a small cleanup of offsets, want to keep this fairly trivial diff from obscuring more important upcoming changes.

The two non-trivial things here are 1) implement `_Tick` class in offsets.pyx with the most basic of its methods and 2) optimization of `Tick.__hash__`.  You'd be surprised how big a difference this particular optimization makes:

Before:
```
In [2]: day = pd.offsets.Day(2)
In [3]: %timeit hash(day)
100000 loops, best of 3: 11.7 µs per loop
```

After
```
In [3]: day = pd.offsets.Day(2)
In [5]: %timeit hash(day)
The slowest run took 8.61 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 1.86 µs per loop
```