Use cache_readonly attrs to minimize attrs set in __init__
Trying to break the fixes to `offsets` into small pieces.  Recall the goal is to make `DateOffset` immutable so as to fix the very slow `__eq__` calls that get made by `Period.__eq__` and the `PeriodIndex` constructor.

As a step towards immutability, this PR is trying to reduce the number of attributes set in `__init__`, as suggested by @shoyer a while back.

In two places the `__init__` methods are identical to those of the parent class, so are removed.