Refactoring to add a backend abstraction + sliding ratelimit in the redis backend

Slight refactoring to add modular backends
Two backends are now available:
 - cache: using the standard django cache framework
 - redis: using redis-py to achieve a sliding ratelimit behavior (fixing issue #11 btw)