Accept space separated keywords in keyword parser rule
Tagging for version 2.0.1
Bump version to 2.1-SNAPSHOT
Back to development version.
Merge pull request #1901 from tinwelint/2.1-pom-updates

Bump version to 2.1-SNAPSHOT
Adds back store migration files deleted by mistake by the release script
Legacystores live in zip files
Uses the migration test utils from kernel
removing unused 'testing-utils' project
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.

--
Uses the new zip resource dbs
Fixes UpgradableDatabaseTestIT

Makes the test use the correct path for a required resource.
Also makes it use correct temporary directories.
Merge pull request #1895 from cleishm/multi-keyword

Accept space separated keywords in keyword parser rule
Merge branch 'neo4j/2.0-maint' into master
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
Removed use of deprecated Traversal.description method.
Splits relationship chains by type and direction

Changes how relationships for a node are stored on disk. Node and
relationship records are virtually untouched, and a new type of records
(and store) sits in between a node and its relationships acting as a
node-centric index for type and direction of the relationships.

Previously the logical layout has been that a node has one long chain of
relationships connected to it, where relationships of all types and
directions were mixed in the same chain. Loading relationships of a
particular type and direction could not be made efficiently since the
whole chain had to be loaded. Simplified like this:

   NODE->REL1->REL2->REL3...

This commit introduces RelationshipGroup(Store/Record) which sits in
between node and its relationships like so:

   NODE->GROUP_A->GROUP_B->GROUP_C->...
        /  \        |        |
      OUT  IN      OUT      IN
      /    |        |        |
    REL1  REL2    REL3     REL7
     |     |                 |
     v     v                 v
    REL4  REL6             REL8
     |     |                 |
     v     v                 v
    ...   ...               ...

which removes to need to load irrelevant relationships when knowing their
type and or direction. Furthermore, backpointers on all relationship
records that are first in any chain are used to store the number of
relationships in that chain, allowing for O(1) counting of relationships,
even based on type and direction.

Nodes with few relationships will bypass the relationship group index
and instead switch on a certain number of relationships. This to remove the
overhead of the relationship group records for a small number of
relationships. The dense node threshold is configurable and defaults to 50.

This commit also bumps the store format to 0.A.2 and requires a store
migration, which will happen automatically if configuration settings to
allow it are in place.

The concsistency checker lacks some checks around relationship group
records, so at this point it's not fully covering those areas.
An instance will now create a cluster only after contacting all instances

Before it was so that an instance would create a cluster if, during discovery,
 it would contact at least half of the instances configured as initial_hosts
 and it was the one with the numerically smallest instance id among them.
 This lead to problems where instances would go ahead and create different
 clusters because of startup order. In particular, an instance could
 respond to two other instances with numerically lower instance ids
 but those two would not manage to contact each other. That would
 lead them to each forming a cluster on its own and the remaining
 instance joining one of them, in random.
 This commit changes so that an instance no longer waits for
 quorum number of instances but all of them, as configured in
 initial_hosts. This ensures that the instance forming the cluster
 will have seen all that is possible to see and all other instances
 will join that cluster.
Adds description string to cluster test DSL verification method

ClusterMockTest.verifyConfiguration() can be called anywhere during
 a cluster test and is also called automatically at certain
 operations. This can lead to confusion in case of failures, as
 it's not obvious which call of the ones made during a test failed.
 Adding a description helps tell them apart.
Removed use of deprecated Traversal.description method in examples.