Implement routes with cache.

Re-implemented the routed and unrouted  envelopes as a cache and a hash
respectively.

Routed messages are cached with the identifier for their route. The
cache entry contains the path and array of envelopes. When the array of
envelopes is empty, the cache entry is deleted. There is now a
meta-command that will insert a cache entry for a route when the
envelopes are ingested. There is a new method named `ingest` that will
except an array of envelopes and merge them with the routed and unrouted
collections of envelopes.

Unrouted envelopes are stored in a hash table keyed on the identifier of
the destination legislator. The route is obviously from the current
legislator to the destination legislator. Unrouted envelopes are sent
along with routed envelopes when possible. Routed envelopes I never sent
along an unrouted path. They are only ever sent along their specific
route.

I've created two new objects to model a network deployment
synchronously. I've created a `Machine` object that represents a
computer that hosts a legislator. I've created a Network object that
represents a collection of Machines on a network.

Upgraded Magazine for the `expires` function, but not actually using
that function at the moment.

See #120.