Cache ::getPropertyValue

This has been tuned a bit. Caches values that are in the store and, maybe more importantly, caches when values are not in the store.

On a cache miss, the slow part is _.hasKeyPath().

Time pulling scoped properties on a 500 line file was reduced from 150ms -> 10ms. 

When we go deep on perf, this will prolly become a bottleneck, but is the least of the concerns at this point (deprecations take ~120ms in dev mode for this file).