* add an update_cache flag to get_state to have more granular control over when we write to the cache
* State cache tweaks
- add state-cache-headroom flag to control pruning
- prune old epoch boundary states ahead of mid-epoch states
- never prune head block's state
- avoid caching ancestor states unless they are on an epoch boundary
---------
Co-authored-by: Michael Sproul <michael@sigmaprime.io>