Rework `Model` into a collection of mixins

This reworks the `Model` into a collection of mixins for better
organization, testing and possibly sharing with `ReadModel`. This
will also simply the interface and focus on updating associations
so they can be "more useful" to factories and stacks. This is a
re-work of the `Model` mixin based on what we've found in using it
in a real application.