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.