Folded DefaultReplicaSetCluster into DefaultMultiServerCluster.  This has the nice property that we get a few things for "free": mongos load balancing, and automatic discovery of whether the list of server addresses represents replica set members, or mongos's.
Replaced Phaser with an AtomicReference<CountDownLatch> which acts as a simple phaser.  Each time the cluster state changes, it atomically swaps the CountDownLatch with a new one, and calls countDown on the previous one.