Initial session work
Add timeout handling

- Check session timeout when getting a session
- Test session timeout
Asynchronous operations

- Convert all session operations to asynchronous
- Abstracted session storage to SessionStore
- Add generic test and subclass for clustered session storage