Expand models with more detailed fields

Many of these fields will go away once we better formalize and unify
the schema. However, having a clear description of the existing structure
is essential for migration.
Add a new default JSON encoder that can process BSON objects
Add 'to_son' method to model classes
First working APIv2

Additional methods will be implemented in later commits.

Closes #41.
Merge branch 'apiv2'

* apiv2:
  First working APIv2
  Add 'to_son' method to model classes
  Add a new default JSON encoder that can process BSON objects
  Expand models with more detailed fields