Backend refactoring

Started to do some cleaning up that will hopefully help us zero out bugs. I added the room abstraction and separated the chat/command logic. More to come.