Added a cache mixin.

Borrowed from https://bitbucket.org/nextscreenlabs/django-viewclass-mixins/
Licenses are compatitable (both BSD-3).
Same question about `patch_vary_headers()`