Adds support for cluster discovery between concurrently starting instances

When an instance tries to join a cluster, it notifies all instances in the
 config instead of doing one at a time.
While waiting for configuration requests during cluster join, instances receive
 join requests.
If join fails on all configured instances, the ones that made contact during
 join are tried.

This is a slightly edited commit from Rickard Oberg's PR
 https://github.com/neo4j/neo4j/pull/440
More appropriate check for URI when joining a cluster, verifying uniqueness of server ids