Add first pass `MR::ReadModel`

This adds a first pass at defining an `MR::ReadModel`. The goal
is to be able to use a read model instead of an actual MR model,
and have it provide the interface for reading values from a
record. Basically, provide only the read-interface of a model
but allow it to be dynamically defined by the record passed to it.

The primary use-case for this is when doing an AR scope with
custom SELECT columns. Currently, MR doesn't provide a way to
get these, and they don't fit well with the MR model.
`MR::ReadModel` handles this. It can be used with `MR::Query`
and will take a record, similar to `MR::Model` and expose it's
attributes (even custom selects) as needed.