Support Vary response headers in cache keys

This PR fixes Responses with different Vary headers being combined within the same cache items. This is especially important for content type or language negotiation, where different request headers may cause different responses to be returned for the same method and URL.