Reapply reverted commits

4700f7f653cbb09896bdad6009e175a61808057c:
Convert tests to CypherFunSuite

4501bd22519c07e674e4a8edc5c59daa19f9cc3e:
Rename mergeUp & mergeDown to supremum & infimum
AKA leastUpperBound and greatestLowerBound

c8ce10c2063b3c52d7eab56b0d4598ffe1c13eee:
Make TypeRange and TypeSpec clearer
Adds documentation and cleans up some tests
Updated pom.xml so that mvn exec:java works again in server.
Ensure parse errors are propagated for badly escaped statements in server
Fixed bug when combining path expressions and order by in Cypher.
Merge pull request #3228 from pontusmelke/fix-server

[2.2] Small fixes to server
Merge pull request #3230 from pontusmelke/type-bug

[2.2] Fixed bug when combining path expressions and order by in Cypher.
Fix for #2907, labels on varlength patterns where not checked properly.
Make type rules in Add clearer

Taken from #3235
Merge branch 2.1-maint
Merge pull request #3245 from cleishm/type_clearup

[2.0] Make type rules in Add clearer
Merge pull request #3240 from pontusmelke/issue-2907

[2.0] Fix for #2907, labels on varlength patterns where not checked properly.
Merge remote-tracking branch 'upstream/2.0-maint' into 2.1-maint
Merge branch '2.1-maint'

Conflicts:
	community/cypher/cypher/src/test/scala/org/neo4j/cypher/MatchAcceptanceTest.scala
Reflective bing
Adding scala-reflect
Reflective perty
Make drills be extractors (and comment out a lot of things to keep it
all compiling)
Update LICENSE files for scala reflect
Add DocOp and evalDocOps
Remove bling and refactor Extractors to be more practical