use intersection of property keys

This allows calling the mergeValuesForKey:fromModel: method
on an MTLModel instance with a subclass or superclass as the
fromModel parameter; only the property keys common to both models
will be updated.

See issue #307 for discussion.
some cleanup based on feedback
fix formatting
cache model.class.propertyKeys outside of loop

avoids calling the propertyKeys class method for each iteration
of the loop.
use beforeEach to set up models in test

reduces code duplication and line count.
add whitespace
clean up whitespace
Merge pull request #311 from kilink/master

make mergeValuesForKeysFromModel: work with sub classes