providing constructor params to customize the future scheduler
making it easy to override the future scheduler in InMemoryHttpResponseCacher
cleaning up NonEmptyList => String code
removing FutureScheduler interaction from HttpResponseCacher
ETagAwareHttpClient does the scheduling itself, and the cacher stays simple this way
removing cache synchronization
there's still a race condition between the remove and the various cache sets, and if get is called multiple times