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.

Related to #69
Related to #70