At the moment this is thread safe in usage only.
* MDBReplicaSetImpl schedules the addition or removal of a member
* The Runnable gets the set primary and calls addMemberToReplicaSet or removeMemberFromReplicaSet on its client
* Both of these create a new ReplicaSetConfig instance by loading the existing configuration from the server and updating it as appropriate. They then call reconfigureReplicaSet.

It's important to know that we avoid concurrent additions and removals of members from sets by using a single thread executor in MongoDBReplicaSetImpl. It's likely we would have problems if this were changed. (I'll add a comment to that effect.)

If we start sharing a single instance of ReplicaSetConfig we definitely need thread safety.

Thoughts? Happy to incorporate your comments or to mark it `@NotThreadSafe`.