Add cache.remove and cache.clear as external APIs.

To support remove which requires a key, I add the cacheKey to the response object when inserting into cache.

This could also be achieved by trying to convert a URL into a key when removing, but that is always going to be a faulty process and likely to break during the edge cases, so while this is a bit more work for the application, it's far safer.

Closes #113