Modify SchemaLock to be only one class.

The approach taken here to solve the constraint index creation is to move the ability to create schema constraint indexes in as an internal operation inside the Kernel. The inner transaction that creates the index is triggered from within the kernel, and has access to this internal way of creating the index. Since we are in complete control of the call, we can then drop the requirement for a schema write lock for the index creation, since we know that the outer transaction will always hold a write lock.

o Resolves issue where multiple transactions could hold a schema write lock
o Improves index lookup performance by one order of magnitude
o Refactors uniqueness constraint code to not deadlock when constraint index is
  created.
o Removes some of the uniqueness index methods that were leaking through
  the kernel API.
o Drop and list uniqueness indexes are still exposed, since the constraint
  index cleanup job uses them. Added appropriate TODOs for pulling that job
  into the kernel, rather than keeping it on the outside.