use routing and threaded dispatcher for db access

put a smallest-mailbox router in front of the db supervisor and use a
separate actor system with a pinned dispatcher for that actor. the
router provides access to multiple instances of the supervisor, each
with its own db connection running on its own dedicated thread.

also, let the session manager control sending messages to the session
since writing to the channel is potentially blocking. it's wisest to
let the session manager control access to blocking operations on the
session in order to allow sessions to be remoted or clustered separately
from regular world server actors.