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

_**NOT READY FOR MERGING** - I still want to run the tests multiple times with and without this change to make sure the change does not decrease performance._

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.