Make Term#set_data manage linkages

Making terms aware of predefined linkages (and making them manage them) allows
dimensions to focus exclusively on getting the correct data to each term; terms
that exist in a dynamic grid and terms that have static components may be
treated the same.
Avoid value recalc when only linkages change

The idea here is to treat the data changes as a delta, rather than a full reset
of the term, and therefore only do the work required by the delta.  If only a
parent linkage changes then that means the value need not be recalculated.
Allow Term to manage data privately

Seems like a conservative choice at this point that conveys the intent that
data only be modified via set_data.  Later terms will need to provide their
data in some form for serialization, but that isn't now.
Spike data management lifecycle

This reworks managers, dimensions, and slots such that only the manager has
references to both the slots and dimensions.  This simplifies and refocuses
dimensions (or rather this is another flip-flop in the design) as well as
giving slots a concrete identity -- they are hashes with a special key for
time.

One huge advantage of this design is that time is ALMOST treated the same as
all of the other terms.  A little more work could make it so that they are
literally just other terms.  It might mean that Manager#advance_to can be moved
into a special dimension.

More work is needed.
Track slot time in a term

This will allow the time to be referenced as a linkage, like a dimension.
Cleanup variable names

Changes 'identifier' to the more manageable 'id'.  Makes consistent the use of
names across classes.