Add new user accounting system and separate server logic from WebSockets.

Now the logic that handles client<->server communication is agnostic to the
exact way data is transferred and its format. Currently we just have JSON
wrapped in WebSockets but with relative ease we can add more ways to
communicate.

I have added initial code for logging in to the system. We have guest and
registered accounts, where former accounts are not stored in any persistent
state and are meant for users who are just looking and not playing. We'll see
how this evolves.