Update `MR::Model`, use reworked mixins for behavior

This updates the `MR::Model` to use all the mixins that have been
previously done. This switches from the old behavior to the new
behavior. This includes a few backwards incompatible changes.
These were made in previous commits, but this "turns them on",
by switching the `MR::Model` mixin to use the new logic:

* There is no `mr_config` for accessing the "configuration" of
  a model. The previous options can be accessed with the class
  methods: `record_class`, `fields` and `associations`.
* Using `fields=` to write multiple fields will only take hashes
  and will only write fields. Previously it would write any
  "writer" method.
* Associations no longer take a model class name. This is always
  infered from the associated record class.
* Associations now check there record's for a matching association.
  If it doesn't exist they will throw an exception.
* Model's now have a readable `inspect`.

Related to #29
Closes #67
Closes #69
Closes #70
Closes #82
Closes #91

**Note** This is a backwards incompatible change. The model's
interface has changed and is not compatible with old models.