Redid some of the ignored UniqueIndexAccessorCompatibility tests in terms of UniqueConstraintCompatibility.

The populating IndexUpdater test, however, is not equivalent to the test it replaces, because our
pessimistic concurrency control seems to make some of those particular scenarios in the old tests,
impossible to hit through the public API.

The work of rewriting the tests is not yet done. This is just a step of the way.
Implement replacements for all the ignored index compatibility tests
Remove unused code from unique indexes.
Increate test timeout hoping that it'll be less likely to fail on the virtual build servers.
Add CypherTestSuite that extends FunSuite with the right RunWith annotation
Use a more verbose error message when index and label scan hints are not applicable
Merge pull request #1934 from chrisvest/duplicate-number-index-tests-fix

Duplicate number index tests fix
Merge pull request #1963 from jakub-/cyphertestsuite

CypherTestSuite
Merge pull request #1958 from boggle/2.0-msgfix

Use a more verbose error message when index and label scan hints are not applicable
Add ParserFixture for using Cypher Parser in tests
Various performance updates to AST rewriting

o Memoize copy constructors for Products
o Use an Iterator for folding over Product children
o Use Object equality (this requires that Rewriters work with AnyRef
  items rather than Any)
o Use tail recursive folds
Use Cypher query cache to find plans based on AST

Cypher compiler is now recreated on schema change, to ensure cache
flushing.
Only do semantic checking on query cache miss
rewrite: extract parameters from literals
added performance test