Added a user model. Fixes #5.

Okay, truth be told this does a heck of a lot more than just fix issue #5.  This is a complete overhaul of the Python side to get it ready for growing large.