Enforce uniqueness constraints with lucene indexes.

The implementation is still missing in a few cases, but the most rudimentary cases work.
Adds are being checked, but updates are still missing.

Introducing infrastructure for grouping together compatibility feature sets into test suites.
This is used for the index compatibility test suite, allowing each index provider to only
extend a single test class in order to verify compatibility with the SchemaIndexProvider API.