Start a test suite for the ORM
Add test for ReadOnly
Refine the set_attributes API

Renamed to set_attributes from update_attributes, because "update"
implies that we're hitting the db (because of the UPDATE SQL command).
Set is much better for local attribute modification. This also uses the
set_attribute function when instantiating the model, so that we don't
take kwargs in the constructor (this was confusing me in the docs; what
were those kwargs supposed to be for? Am I supposed to supply them
somehow?). I factored out a check_registration function and fixed a
buggy check in Model.__init__ to use that.