fixes neo4j/neo4j#1855

guarantee initialization order of supplied unmanaged extensions by using java.util.List instead of java.util.Set.
fixing compile error in neo4j-desktop
Moved ownership of Config, when running the Neo4j Server, to the Server rather than IAGDB.

o Introduces new constructors for the embedded, highly available and impermanent graph databases
  that allows passing in Config directly. This was not added to the GDBFactory classes, since it
  is not meant to be a user-facing feature.

o Refactored the NeoServer and Database related classes to take advantage of this, and allow injecting
  config into the database used.

  Overall, this is a move towards consolidating the config for the whole product, eventually moving us
  to use a single config file. It is also a move towards further structuring the application to have
  shared components, owned by the assembly class which, in the case of the server, is NeoServer.

--
Update the pretty graph cookbook to use labels

This fixes the output graph that was incorrect because of an isolation bug
where you could read a deleted node in an open transaction.
Make kernel dependencies provided for the Cypher 2.0 compiler, so it can run against kernel 2.1 in the future
Fixed lifecycle handling during slave switch. No longer causes deadlock with concurrent shutdown of database.
Added predicate to wait for all instances to be joined when using arbiters

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/lifecycle/LifeSupport.java
	enterprise/cluster/src/main/java/org/neo4j/cluster/MultiPaxosServerFactory.java
	enterprise/ha/src/test/java/org/neo4j/ha/correctness/ClusterInstance.java
	enterprise/ha/src/test/java/org/neo4j/test/ha/ClusterManager.java
Fixed lifecycle handling during slave switch. No longer causes deadlock with concurrent shutdown of database.
Added predicate to wait for all instances to be joined when using arbiters

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/lifecycle/LifeSupport.java
	enterprise/cluster/src/main/java/org/neo4j/cluster/MultiPaxosServerFactory.java
	enterprise/ha/src/test/java/org/neo4j/ha/correctness/ClusterInstance.java
	enterprise/ha/src/test/java/org/neo4j/test/ha/ClusterManager.java
Fixed lifecycle handling during slave switch. No longer causes deadlock with concurrent shutdown of database.
Added predicate to wait for all instances to be joined when using arbiters
Merge pull request #1904 from jakub-/pretty-graph-cookbook-labels

Update the pretty graph cookbook to use labels
Merge pull request #1905 from systay/kernel-provided

Make kernel dependencies provided for the Cypher 2.0 compiler
Moves getRelationships into the kernel API.

 o Still delegates to old implementation, but this is now done through the correct call paths.
 o Locking has been moved to the Kernel locking layer.
 o Obviates the need for the lock that could be passed to getNodeForProxy, which has been removed.
 o Deleted relationships are now filtered out in StateHandlingStatementOperations.
 o Use primitive iterator on the low levels for rels
 o Swaps lower level implementation to use ints instead of RelationshipType.

 Remaining:
 o getDegree still uses the old code paths, and should be swapped over in a follow-up commit.

Conflicts:
	community/kernel/src/main/java/org/neo4j/helpers/collection/IteratorUtil.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/ConstraintEnforcingEntityOperations.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/DefaultLegacyKernelOperations.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/StateHandlingStatementOperations.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/operations/EntityReadOperations.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/StoreReadLayer.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeImpl.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/core/RelationshipIterator.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/api/integrationtest/RelationshipIT.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/core/RelationshipIteratorIssuesTest.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/core/TestRelationshipGrabSize.java

Kernel TX prepare and commit now get called outside synchronized blocks.
Replace infix, postfix and prefix function expressions with unique AST objects
Adds multi-hosting service to Neo4j Server.

 o Adds a configuration database to the Server, containing
   meta data about hosted databases.
 o Adds database registry, managing live hosted databases.
 o Adds runtime reconfiguration of databases - dropping, creating,
   changing config and mode.
 o Contains several provisions ensuring full backwards compatibility
   with previous 'db' database and it's associated configuration.
   If a legacy config file exists, it overrides hosted config.
 o This commit *only* contains these new services, they are not
   plugged in. This is meant to incorporate this piece-meal by
   first moving the new code in, and plugging it in in a follow-up
   commit.

Conflicts:
	enterprise/com/src/test/java/org/neo4j/com/ServerTest.java
Redid some of the ignored UniqueIndexAccessorCompatibility tests in terms of UniqueConstraintCompatibility.

The populating IndexUpdater test, however, is not equivalent to the test it replaces, because our
pessimistic concurrency control seems to make some of those particular scenarios in the old tests,
impossible to hit through the public API.

The work of rewriting the tests is not yet done. This is just a step of the way.
Wait for 3 to become master
Move getDegree and getRelationshipTypes into the kernel.

 o Moves getDegree and getRelationshipTypes into the kernel implementation.
 o Introduces VersionedHashMap, a hashmap lacking certain multi-threading checks.
Updated to correct version
Implementing split function

test refactoring
Implement replacements for all the ignored index compatibility tests
Merge pull request #1926 from davidegrohmann/2.0-splitfunction

Implementing split function