Initial skeleton for changes to enable distributed gevent-socketio:
1. Added a SocketManager class to abstract sockets from the storage used.
2. Started implementing default/local version, which should keep things the same and Redis version as a reference distributed implementation.
3. Abstracted out some of the objects used internally by the sockets like Queues and session dictionaries, so that they can be distributed too.
- Session lock won't block for multiple calls from the same socket, it's held by all context managers and released at exiting the last.
- Heartbeats synced using Redis pubsub.
- Integrated the manager and the session locking into virtsocket and the handler.
- Optimized bulk reading from queues.
Handling of namespaces for distributed sockets.
Configuring and creating the socket manager
Minor refactoring
Bugfixing and refactoring.