Update `MR::ReadModel` to use new fields and querying interface

This updates the `MR::ReadModel` to use the fields and querying
interface. This changes the concept of a read model to be more
fully defined. It breaks the old behavior and replaces it with
new syntax and improved behavior. This should make read models
more useful and powerful.

This makes a few notable changes to read models:

* Field reader methods are no longer dynamically created based
  on the data passed in. Fields must be defined using the
  `field` class method.
* There is no "interface module". This means field methods
  are defined directly on the read model class, so they can
  no longer be supered.
* Field reader methods will type-cast themselves based on
  the type they are given when configured.
* Read models now provide a query method and it can be
  configured using class methods for the different query
  parts.

**Note** This breaks backwards compatibility of read models.