Internal server cleanup

This does not go quite as far as it should, but goes a little way towards
cleaning up stray items in the server. The package structure needs a bigger
cleanup, but that job is much more complex as several interfaces in the
internal packages are exposed as public API and are thus unmoveable directly.

- Remove unused services and classes
- Move REST service classes into rest package
Refactored test code
Clean up of cardinality estimation

* Mostly test clean up around AssumeIndependenceQueryGraphCardinalityModelTest
* Also tweaking of the selectivity of relationship uniqueness predicates
Handling of var length in the independence cardinality model
Fix error in UNWIND docs.
Generalize IndexSamplingJobQueue

- fix pollAll semantics to return values wrt insertion order
Merge pull request #3513 from systay/varlength-cardinality

Var-length cardinality estimation
Args: Make it possible to distinguish options from flags to make parsing more robust

With this change, parsing flags such as `-recovery` will never consume any consecutive symbols
in the list of arguments, such as symbols meant to be orphaned arguments.
Consistency checker fails when recovery needed but '-recovery=false' specified
After transactions were applied in recovery NeoStore is asked to rebuild id generators
Merge pull request #3516 from nawroth/2.0-unwind

Fix error in UNWIND docs.
Merge pull request #3507 from jakewins/2.1-server-clean

Internal server cleanup
Merge pull request #3517 from davidegrohmann/2.2-sampling-controller-ref

Generalize IndexSamplingJobQueue
Merge pull request #3515 from lutovich/2.2-consistency-check-recovery-by-default

Fixed orphan arguments handling in Args, recovery procedure in CC and NeoStore
Merge remote-tracking branch 'upstream/2.1-maint'

Conflicts:
	community/server/src/main/java/org/neo4j/server/AbstractNeoServer.java
	community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java
	community/server/src/main/java/org/neo4j/server/NeoServerSettings.java
	community/server/src/main/java/org/neo4j/server/configuration/Configurator.java
	community/server/src/main/java/org/neo4j/server/database/DatabaseHosting.java
	community/server/src/main/java/org/neo4j/server/database/DatabaseRegistry.java
	community/server/src/main/java/org/neo4j/server/modules/StatisticModule.java
	community/server/src/test/java/org/neo4j/server/StatisticsCollectionEnabledDocIT.java
	community/server/src/test/java/org/neo4j/server/database/DatabaseHostingIT.java
	community/server/src/test/java/org/neo4j/server/database/DatabaseRegistryTest.java
	community/server/src/test/java/org/neo4j/server/webadmin/rest/RootServiceDocTest.java
	enterprise/server-enterprise/src/main/java/org/neo4j/server/enterprise/EnterpriseNeoServer.java
Merge the 2.1-maint merge
Merge remote-tracking branch 'upstream/2.0-maint' into 2.1-maint
Merge branch '2.1-maint'

Conflicts:
	community/cypher/docs/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/UnwindTest.scala
Remove unused code
Add consistency-check as a dependency of community/neo4j