Do not monkeypatch requests.model.Response to enable pickle

CacheControl no longer attempts to pickle a requests.model.Response
object so we no longer care if it can be.
Gracefully handle the case where an old object is in the cache
Handle Vary headers

This keeps the existing behavior where a mismatch on the Vary headers
simply acts as a cache miss rather than making it possible to store
multiple responses for different sets of Vary headers. This includes
a change to the logic to properly handle the '*' value in a Vary
header.
Refactor Serialization

* Handles the conversion of Python values to pickle files in one
  location
* Properly supports versioned cache entries
Correct the tests for the new implementation
Make the test server work correctly on Python 3.x