Use cache control max age for value timeout

Instead of using a global timeout for all requests use the `max-age` from
the `Cache-Control` request header to set the cache timeout individually for each
request stored.

NB. This has only be done for the in `MemoryStore` cache, not the `FileStoreCache`