Improve db

#8 @gsathya @ben-jones 
I changed directory structure and split server.py into models and views.
My first comment is wrong. This had to do with storing the last time we saw clients. I wanted to include the ability to programmatically create users without them actually connecting and thereby storing an invalid value for last_seen. An example use case would be having someone take one of these, test in country, and upload after they get back. However, this adds potentially unnecessary complexity, so I am ok with always setting this on creation if you feel strongly