Create real named classes in adapter spec

This is arguably less hacky than creating anonymous classes and
stubbing the name method. We safely remove the constants after
each example. It also allows us to use these classes against an
in-memory SQLite3 database if we wanted to.
Reduce number of queries when creating multiple models

Also refactor the create/build model methods. Fixes #24.