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
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