Huge refactor and restructuring of websocket API.

The whole thing is now a package just like the Flask part.
Rooms now have their own class where code for operating on the room goes. A lot of code that was relevant to the
room was moved from the UserWebSocket class to the Room class.

Users now have a username. Currently it's just "User" followed by a number, but there will be a system for this
in the future.