TTL mixin implementation for Redis, and tests

In ``_put``, ``None`` is not a valid value for ``ttl_secs`` - any ``None`` will be replaced by the ``put`` function with the appropriate default. At most, I would put an ``assert ttl_secs is not None`` here.