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
Merge pull request #1979 from cleishm/parser-fixture

Add ParserFixture for using Cypher Parser in tests
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