MODE-2295 Fixed a number of issues with indexes

Indexes were not properly removing values, nor were they adding only nodes that satisfied their
definition's node type. Correcting the latter required handling when the node types in the repository
were changed, which might affect which node types are to be included in a given index. Therefore,
care was taken so that the index provider implementations' IndexChangeAdapters automatically handled
changes in the repository's node types.

A number of tests were added to replicate the problems reported in MODE-2295, and even more were
added to verify the proper behavior (including removing values) in the low-level local index
implementations. In particular, the UniqueKeyComparator logic was not quite handling all of the negative
infinity cases it should have (it was already correctly handling the positive infinity cases).