Remove the extra RAC KVO keys
Remove the requirement for the reduceEach on rac_valuesForKeyPath

This removes the requirement for the reduceEach: on
rac_valuesForKeyPath:observer:. We add a new method which
rac_valuesForKeyPath:observer: and
rac_valuesAndChangesForKeyPath:options:observer: both use. This saves
significant cycles when using RACObserve().
Optimise addDeallocObserverToPropertyValue

This stops the property attributes being checked every single time the
value changes. It’s always the same property (i.e. keyPathHead on self)
anyway. So just do the property attribute checking only once and then
cache whether or not we actually need to do it.