Allow `super`-ing to model and read model field/association methods

This modifies the `MR::Model` and `MR::ReadModel` to use an
anonymouse module for defining field and association methods. The
goal of this is that by using an anonymouse module that is
included on a class, user's can overwrite and then `super` to the
original method. This can be particularly useful with the
`ReadModel` because when using custom selects with AR, it will
not type-cast columns:

```ruby
class MyResult
  include MR::ReadModel

  # returning an id column, will return as a string, not an integer
  # thus, you could type-cast it to an integer like so
  def some_id
    super.to_i
  end

end
```

@kellyredding - This diff is rough because of some tabbing changes, but the implementation and goal are described above. I'd like to use this primarily in conjunction with `MR::ReadModel`, so I can manually type-cast boolean and integer columns.