In the ICP support, use the current cache generation number to access cache objects. Note that at this point we cannot tell whether the cache generation has been overridden for a specific object; we can only use the global configuration.
Refactor the cache interface so that the HTTP cache lookup path uses the new HttpCacheKey type, rather than fussing with URL objects directly. This lets us use the per-request cache generation number to access cache objects while the cache remains oblivious.
Add a new overrideable proxy.config.http.cache.generation configuration option. This is a generation number that will be hashed into the cache key before accessing the cache layer. Update the X-Debug plugin to publish the generation ID into the X-Cache-Generation header.
A number of the parameters to Cache::remove() are never actually used. We can simplify the code and make it easier to understand by removing these.
This is another small step towwards allowing the Cache interface to primarily in cache keys rather than URLs.
The second cache SM gets passed to HttpSM::do_cache_prepare_action(). This calls HttpCacheSM::open_write() which sets the lookup URL in the HttpCacheSM.