Abstracted cache_key, timeout, and orig function out of decorated function
Abstracted cache_key, timeout, and orig function out of decorated function

This commit makes the internals of Flask-Cache more accessible to developers. The
function returned by the cached() decorator has three attributes on it: `cache_key`,
a string containing the key used to cache the results of the function;
`cache_timeout`, the same value passed to the decorator, and `uncached`, the original
function that was decorated. These attributes are both readable and writable, and
the decorated function will pick up changes to these attributes. This allows
developers to access and modify the cache entry for a function (useful for prewarming
caches, for example), access and modify cache timeouts (adjusting caches on the fly),
and an easy way to manually call the original function without caching.

The memoized() decorator has the same attributes, but instead of a `cache_key` string
attribute, it has a `make_cache_key` function, which accepts the same arguments
that the underlying function does.

ordbogen/flask-cache,alexey-sveshnikov/flask-cache,kazeeki/mezmorize,gerasim13/flask-cache,thadeusb/flask-cache,j-fuentes/flask-cache,alexey-sveshnikov/flask-cache,ordbogen/flask-cache,gerasim13/flask-cache,j-fuentes/flask-cache,thadeusb/flask-cache,kazeeki/mezmorize