caches: store computation time inside context manager as helper. Since the with block is full
calculation we can use it to calculate the function execution time.
caches: new cache context managers.
- deprecate beaker cache completly
- use new cache decorators from dogpile
- use a proper per cache key invalidation
caches: use safer method of purging keys from memory dict. During some concurrency tests
we detected that has_key has a race condition, and catching exception is safer.