Fail uniqueness constraint creation if concurrent updates violate the constraint.

It is possible that changes are made (by another transaction) that violate a constraint in between
that constraint being added to the transaction, and the transaction committing. This should fail
the transaction that creates the constraint upon committing the transaction.

This is done by having the backing index enter a semi-live state where all constraint violations
are recorded as "evidence" of violation, but not thrown to the transaction that violated the constraint,
instead this evidence is thrown to the transaction that creates the constraint.