COMPAT: Scalar types immutable
My impression (discussion somewhere on gitter) is that `pd.Period` is supposed to be immutable.  That would certainly make sense for objects going into a `PeriodIndex`.

```
per = pd.Period('2014Q1')
>>> per
Period('2014Q1', 'Q-DEC')

freq = per.freq.copy()
freq.n *= 2
per.freq = freq
>>> per
Period('2014Q1', '2Q-DEC')
```

`per.freq` is a `DateOffset` object*, which is defined in `tseries.offsets`.  There is a comment in `tseries.offsets.BusinessHourMixin.apply` saying "# calculate here because offset is not immutable".

So a couple of questions:

1) Are we *sure* `pd.Period` should be immutable?  If so, is there a preferred way of imposing that?  Note that the class is defined in a .pyx file and some methods explicitly call `__new__`.
2) Does the comment about offset not being immutable mean that it can't or shouldn't be?  Outside of `__init__` and `__setstate__`, the only place in `tseries.offsets` where I see any `self.foo` attributes being set is `self.daytime = False` in `BusinessHourMixin._get_business_hours_by_sec`.  grepping for "daytime", this attribute does not appear to be referenced anywhere else.

\* BTW, I think `DateOffset` is one of a small number of commonly-used classes for which there is not a `ABCDateOffset` equivalent.  Is that by design?  If not, I'll be happy to make one.