Use internal heirarchy for types

Replaces the scala-based heirarchy and introduces static vals for
all types, prefixed by CT (Cypher Type)

Reverses the directionality of the heirarchy: now treats Any as
the super type ("up" in the heirarchy). This aligns with the
definition in most other languages.

Renames iteratedType on AnyType to legacyIteratedType
(uses innerType on CollectionType)
Make SubGraphExporter always output numbers with English locale
Added temp debugging for flaky shell test.
Fixes profile problem for queries starting with OPTIONAL MATCH
Use TargetDirectory to run each test case in its own directory.

This test involves servers failing to startup due to timeout.
In some situations the server will fail to shutdown fully in these
situations, leaving file locks that block the next test case.

A full fix for this issue would involve changing the lifecycle of
NeoStoreXaDataSource so that it's subordinate components are managed
through LifeSupport, which would give better assurance of shutdown
on failure to start. However, a change of that cope is too large for a
maintenance release, and this is only really an issue in tests where we
run multiple failed servers in the same JVM.
Coerce generic case conditions to predicates

Fixes #1818
Store the compiled top-level parse rule rather than rebuild
Merge pull request #1821 from cleishm/cypher-parser-optimisation

Store the compiled top-level parse rule rather than rebuild
Merge pull request #1816 from systay/optional-profile

Fixes profile problem for queries starting with OPTIONAL MATCH
Merge pull request #1819 from cleishm/generic_case_predicate

Coerce generic case conditions to predicates