Rewrite session(id) creation code. Fixes #22. Fixes #23.

* Fix possible infinite looping.
* Fix unnecessary multiple saves to Redis.
* Comply with Manager implementation by returning null if specific session ID is requested but is already taken.
* Fix bug allowing duplicate session IDs.