rework session management and character selection saving

session is wholly based on player state now. session id is set from player
token. synthesizing player state on the client side for now but will get it
from the server after login in the next revision.

save character selection in the session. not yet locally stored so it
does not persist across page refreshes.