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 via
   findOrCreate:.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>