Fix a bunch of bugs around new user registration; reorg the way user model/data is handled & instantiated; create user model class