CleanupService doesn't register resources if inside transaction

Methods that returned ResourceIterator still does so, but the actual
returned iterator may not be registered for cleanup if the call was made when
inside a transaction. This is because the transaction will close statement
contexts (i.e. the resource) so it would be unnecessary strain on CleanupService.
Minor work around listing of constraints and awaitIndexesOnline

o Adds SchemaAcceptanceTest for getConstraints()
o Adds Schema.awaitIndexesOnline
o Adds ConstraintType.filter() in favor of exposing Predicate in our
public API
Adds support for listing constraints to shell
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
Fixing coalesce so that it doesn't merge with Any always.
Merge pull request #773 from chrisleishman/ha-setup-tutorial

Fix incorrect initial_hosts in tutorial
Makes Cypher use n.prop! in index selection

o Makes StartPointChoosingBuilder pick up "n.prop!"
o Introduces HasOptionalDefault to decouple Nullable from DefaultTrue/False parser mix ins
Merge branch '2.0-schema-state-invalidation' into 2.0
Merge remote-tracking branch 'tinwelint/2.0-no-cleanup-in-tx' into 2.0
Merge remote-tracking branch 'origin/2.0-list-constraints' into 2.0
Ignore the superslow test (on Windows can take 30min or more)
parameterising test for rcm build
Makes a graph database give a helpful message when it's been shutdown

 * Removed throws IOException from NeoStoreXaDataSource constructor, because it's not true
 * Made ThreadToStatementContextBridge implement Lifecycle so it's told when to shutdown
 * Kernel keeps track of shutdown state and throws appropriate exception when used after
Merge pull request #774 from wfreeman/coalesce727

Fixing coalesce so that it doesn't merge with Any always.
Merge remote-tracking branch 'upstream/master' into 2.0
Create an index to implement a uniqueness constraint.

As part of CreateUniquenessConstraint, perform a (small) transaction that creates an index for the constraint.
This index is marked as an index to be owned by a constraint, but does not have an owner set at this point.

Introduces Transactor to encapsulate suspending and resuming an active transaction to perform a single-statement transaction.
Remove constraint indexes when removing constraints.

If a transaction that creates a constraint rolls back, we execute a small transaction that commits
removing the index for the constraint.

When a transaction removing a constraint commits, we add a command for removing the index
for the constraint as well (in the same transaction - there is no need for separate transactions here).
Introduce CleanupIfOutsideTransaction, extracted from IAGD
Javadocs for resource management of transactions and resource iterables
Mark constraint index as owned when constraint is committed.

Also add a reference to the constraint index from the constraint.