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.
Add `assert_association_saved` test helpers

This adds `assert_association_saved` test helpers which can be
used to test that an association was saved. These use the field
saved assertions to check that the association's fields were
saved. For polymorphic associations, it will test that both the
foreign key and foreign type were saved. All of this was already
available using `assert_field_saved`, this is just more convenient
and expressive.