Handle mapping transformations in one place

This pushes most of the transformation logic back into the Mappings category, and centralizes where properties are filtered in the ActiveRecord category.

Because of this, we can ensure that:

- transformations happen before KVC methods like `willChangeValueForKey:` and `didChangeValueForKey:` are called, and

- invalid keys are dropped before building a predicate for fetching.