First pass at separating a builder API from the duration type

As a result, FrozenDurations should now be quasi-immutable.
That is, FrozenDurations are immutable unless you explicitly mess
around with their internal properties, just like FrozenMoments.