move shift_months to liboffsets, unify implementations of Q/M/Y offsets,
This moves `tslib.shift_months` to liboffsets.

After several algebra-simplifing PRs, here's the payoff.  Nearly all of the logic in M/Q/Y offset subclasses is now identical, so can be moved into the parent classes.

`BusinessMonthEnd` gains an `onOffset` method (instead of inheriting from `DateOffset`)

The Year and Day algebra is simple enough that the diff should be obvious.  The `QuarterFoo.apply` methods are require a few steps of simplification before they become identical.  I decided just to push the whole thing rather than drag it out.