dynamic history

Previously, all specs had to be pre-allocated by using the 'add_history'
function. This is now no longer required and instead serves as a hint to
the HistoryContainer to pre-allocate the space for the given spec.

History can grow by increasing the length for a frequency, adding a
frequency, or adding a field. It can grow with any combination of
these.
If we're keeping the logic behind this parameter, can we at least give it a clearer name?  Calling a function named `__init__` with a parameter named `before_init` is pretty confusing.  

In general, for boolean parameters, I think its better for names the behavior it defines than the context in which it's expected to be used.