Create `MR::Model::Persistence` mixin

This moves the the persistence logic for a `MR::Model` into a
separate mixin. The goal of this is to properly split up the
model's interface into smaller components that work together. The
For the most part, this is an internal change and will provide the
same interface that `MR::Model` currently does. This doesn't change
any of `MR::Model`'s behavior yet. This is just setup for changing
it later.

The only behavior change is that this removes any callbacks from
the persistence methods. We are planning on dropping these from
`MR::Model` so this is part of doing that.

This also includes a minor change to the `Configuration` mixin.
It needs to only run it's `included` hook once. Otherwise, it
causes the configuration to get re-written. I ran into this
while including multiple mixins on the same class.

Finally, this includes some changes to fake records to better
"fake" an actual active record. In the tests, I wanted to
demonstrate how a model proxies it's record's methods. Thus, I
wanted to be able to control more of the state of the fake
record. This meant making `valid?` actually check if the errors
are empty and making the `errors` mutable. This lines up with
active record's actual behavior and provides a more featureful
fake.

Related to #69
Related to #70