simplifying ETagAwareHttpClient
- adding a fold method to HttpResponseCacher, so the caller can transform a cached value
- using the fold method in ETagAwareHttpClient instead of get, apply, remove, etc…
- removing AsyncMutexTable and its implementations because ETagAwareHttpClient no longer needs it. also, they had a bug where the table would become unbounded in size