* settings: use wgcache.make_key as KEY_FUNCTION
* move all key generation functions to wgcache.keys
* make code more testable
* write tests for cached_function [ PASS ]
key generation and invalidation fixes, more tests
remove CACHE_DEFAULT_TIMEOUT (Django will use the timeout defined in settings)