Disallow dropping constraint indexes from the public APIs.

Also disallow creating an explicit index where a constraint index already exists and vice versa.

When listing indexes in the public API(s), the constraint indexes are included,
since they can be used for queries just like other indexes
[implemented through the Beans API - other APIs use this still].

This is done by treating constraint indexes as different from other indexes in the Kernel API,
and by enforcing non-overlap in the DataIntegrityValidatingStatementContext.
Code cleanup (improves static code analysis results)
Adds schema state invalidation when creating or dropping constraints

o Adds kernel-level test for all schema state invalidating operations
o Adds SchmemaIndexTestHelper.awaitIndexOnline
o Adds state invalidation on dropConstraint in StateHandlingTxContext