Add django-cache-machine

django-cache-machine caches querysets based on the SQL generated by them. Basically, it means that `fetch_snippets` and similar views can take advantage of caches that never expire until the data changes, making things in general faster.

The only iffy point would be when we determine which snippets to put out based on their publish date, as a constantly-changing publish date would make the query change all the time and kill the cache-ability. Luckily, we do this in Python directly to avoid this, so no problems there!

I tested some of the views using django-debug-toolbar and it did reduce the number of queries successfully.