Multiple backends support

Slight refactoring to add multiple backends support
Backend are configurable using the _backend_ parameter in the decorator.

Right now, two backends are available:
* cache (default): using the standard django cache module.
* redis: using redis-py (https://github.com/andymccurdy/redis-py) - With this backend rate limiting countdown is not reset on failed retries anymore - fixing issue #11