A cache to avoid recomputing computation on stable data.

This PR is best described by the documentation on the included `cache.py`.  A summary of what went into it:
- a weeklong trip to Portland,
- ~14 food carts,
- ~5 coffee shops, and
- many miles of walking around.
If we wanted to force a recompute, would that be at a layer above this module? I.e. it would just not call compute_and_cache if we wanted to force a recompute?