MODE-1856 More improvements to reduce indexes of no-op property changes 

Changed the algorithm in WritableSessionCache that persists changes so that it more efficiently and correctly calculates whether a change in a property is an effective change in the node that requires the node to be indexed.

Changed the PropertyType.discoverType(...) logic to make it faster given our existing implementation classes. Also added a test case to verify behavior.