Store cached responses for longer, allowing stales to be served

This changes the cache plugin so that the TTL is now how long the response lives after it expires. This means that it's now possible to receive a stale response with the `max-stale` directive (and allows the future `stale-if-error` PR to work).