#21351 -- replaced memoize by lru_cache

Python 3.2 comes with [`lru_cache`](http://docs.python.org/3.2/library/functools.html?highlight=lru_cache#functools.lru_cache), which does basically the same as `memoize`. Currently `memoize` isn't tested or verified, which is a liability. As was suggested in [ticket 21351](https://code.djangoproject.com/ticket/21351), `lru_cache` could replace `memoize`. However as `lru_cache` is only available from Python 3.2 and up, a backport is required for older versions. The ticket also links to a backport (MIT licensed) of `lru_cache`. I've included this backport for older Python versions.

The following questions arised: (discussion in ticket)

 * Can the backport be included, as it is MIT licensed?
 * `memoize` is an internal API, should it follow the deprecation policy?
 * Is this the correct way to include a backport?