Add caching

This commit adds a simple caching module and applies it to some of the
more expensive-yet-easy-to-cache parts of Wikipendium. Currently,
caching is configured to use the `LocMem` caching backend, which should
be 'good enough' for a project like Wikipendium. The added caching
module contains several decorators:

`@cache`

This is a dirt simple function caching decorator, which can accept an
optional `key` parameter, which may either be a string or a callable
that returns a string.

`@cache_model_method`

This is a wrapper for `@cache` that is aware of django model instances,
and uses a model's primary key to create a cache key unique for that
instance. This decorator is made to cache costly model function calls
that vary per instance.

`@cache_page_per_user`

This is a wrapper for `@cache` that emulates django's `@cache_page`, but
takes care to cache separately for each logged-in user, so as to not do
a "Kenneth, 36" [1].

All of these decorators cache with a cache timeout of infinity.

The decorators have been applied to the front page of Wikipendium, the
article page, and the single history page, as well as the model method
of an article content that renders the contained markdown to html. For
views that vary on more than their arguments alone, such as the
`article` view and the `history_single` view, it is recommended to
create a new function that explicitly lists the cache vary dependencies.

The caching introduced in this commit brings a front page load down from
480ms to 16ms, an article page load down from 252ms to 8ms, and a single
history page load down from 92ms to 20ms. All measurements were
performed locally on my laptop using Django's development server.

[1]: http://www.aftenposten.no/okonomi/innland/6789260.html
Merge pull request #247 from stianjensen/caching

Add caching