Instead of having one class for each cluster type only have SingleServerCluster and MultipleServerCluster. Along with some other refactoring.
Added console test application for smoke testing (at least for now, we will probably decide to remove it once we have 100% unit tests). Fixed some minor bugs.
Ported ClusterId, ServerId and ConnectionId over from v2 branch.
Added tests for Binary and Json MessageEncoderFactories.
Added tests for DeleteMessageBinaryEncoder and DeleteMessageJsonEncoder.
Added ReplicaSetName to ClusterSettings.
Added detection of Ghost ServerType.
Move cluster monitoring helper classes into a Monitoring folder and shorten the class names.
Some (very) preliminary work on ClusterMonitor.
Rename Action to TransitionAction to avoid naming conflict with the existing Action type defined by .NET.
Renamed ClusterMonitor to ClusterMonitorLogic. Use a new instance of ClusterMonitorLogic for every call to Transition so it can maintain state as it computes the TransitionActions.