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
Fix error in UNWIND docs.
Generalize IndexSamplingJobQueue

- fix pollAll semantics to return values wrt insertion order
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
Broke out property encoding into separate step
Parallelized property encoding in batch importer

by defering creation of property records until time of writing.
PropertyEncoderStep can have multiple threads encoding properties into
PropertyBlocks, attaching them to each entity.
Moving average for batch importer stats
Dynamically (re)assign processors to slowest importer steps

to optimize steps that are seen to be bottle necks. For this the ability
to have multiple stage execution monitors with individual poll interval,
and a custom task executor with dynamically changable thread count have
been added. Both ExecutorServiceStep and IoQueue uses TaskExecutor.

There's an execution monitor that constantly whatches where processors are
assigned and (re)assigns more or less to those where it sees fit.