TTL mixin implementation for Redis, and tests

The FOREVER/NOT_SET pair is intended to be independant of the implementation; that is "NOT_SET" indicates that the user does not not care/assumes that the defaults of the backend are correct (and most likely no expiration). This is important because "NOT_SET" should result in no TTL-data submitted to the backend whatsoever for efficiency reasons.

FOREVER explicitly sets no expiration. Here's an example to illustrate the difference:

```python
store.put('foo', 'bar', ttl_secs=FOREVER)
```

results in something like

```redis
SET foo bar
EXPIRE foo -1
```

while

```python
store.put('foo', 'bar', ttl_secs=NOT_SET)
```

should result in something like

```redis
SET foo bar
```

This is, of course, redis-specific; the generic interface needs to suport FOREVER and NOT_SET with other possible backends in mind.