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.
that would cause us to have to test for that downstream, and the only user of this is _cached_results, which knows how to ignore events using the existing semantics