Cleanup `MR::TestHelpers`, better tests and cleaner implementation

This cleans up `MR::TestHelpers` by using a cleaner implementation
and removing duplication. It also adds better and more maintainable
tests. This is setup for updating the test helpers.

This also makes a change to the saved attributes with fake
records. They now only store attributes that changed. This makes
whether a key is in the saved attributes hash significant. This
helps ensure that an attribute was saved and changed with the
most recent call to `save!`, not that it was saved at some point.