Updates to cluster discovery and join to allow concurrent startup of instances

These changes allow for a concurrent startup of cluster instances. During cluster discovery they will also record any incoming cluster join messages from other instances, and if no cluster is found, use that information to form cluster