Converted Room to use the more "sophisticated" DB update methodology

* Added a getField() method to DbObject
* Made the hackery that deserializes into non interface{} types a bit cleaner
Even more thread safety
Moved user into its own file
Moved the User type to use the new-style functions for DB updates via DbObject