Added a cache mixin.

Borrowed from https://bitbucket.org/nextscreenlabs/django-viewclass-mixins/