discovery

Discovery:
1. if the cluster is not full: add self to the cluster and return all the peers.
2. if the cluster is full, return a fullcluster error.
This whole section of code is racy. If two machines register at the same time then we will get a "cluster full" error.