Update some docstrings.

Update some docstrings that should have been updated following the
change from persisting only the session dict to persisting a tuple.
Make minor adjustments to imports.
Move timeout out of managed_dict, and serialise a dict instead of a tuple.

Move timeout out of managed_dict, as it is metadata that is not part of
the session. Previously any timeout set via
.adjust_timeout_for_session() would be lost after .clear(), for example.

Serialise session dict, created time, and timeout for storage in Redis
as a dict instead of a tuple, as a dict is more extensible, more
readable and less bug-prone.
Fix invalidate.

This fix adds support for the use of a new session within the same
request after an .invalidate() call. invalidate() now deletes the
session_id key from Redis, and RedisSession now knows to start a new
session with a new session_id when it is needed. (Previously
invalidate() only cleared the session dict and set a header to delete
the cookie, and did not take into account the use of the session after
invalidate().)

It also fixes the cookie setting after invalidate(). Previously
invalidate() just added another Set-Cookie header to the response to
delete the cookie, meaning there could be more than one Set-Cookie
headers for the same cookie name, which should not happen according to
RFC 6265. This has been fixed to set one and only one Set-Cookie header
(if any is needed) in the response callback, and to handle the various
combinations of whether the request started with a new session or
existing session, whether a new session was used after invalidate(),
more than one invalidate()s in the same request, and the
cookie_on_exception setting.
Small correction to docstring.

The signed secret being bad is just one of the possible reasons why the
value cannot be deserialized.