Unique contraint creation.

Prevent creating constraints and modifying pertinent data in the same
transaction. This is a simplistic solution, where we fail the
transaction when we detect that a uniqueness constraint is created in
the same transaction as data that may pertain to the constraint is
modified. In the future we believe we will have a stronger separation
between data modification and schema modification, making it
impossible to do both in the same transaction.
Splits execution plan building into discrete steps
Merge pull request #1110 from systay/phases

Splits execution plan building into discrete steps
Disable constrained changes when underlying index is failed.

Add test to verify that changes are prevented in this situation.
Currently the reason given in the exception is incorrect; this will
be resolved when we properly separate schema and data changes.
Update parboiled, scala and scalatest