Cache entire merged property sets

Now that property sets are deeply merged, caching
individual property values results in too many cache
misses. This way, properties are only merged once per
scope between writes.
I suppose this can be disregarded as there is no cache when options are passed in