WIP refactor and new classes to support the SDAM spec

DO NOT MERGE

Beginning of a cluster/client refactor to accommodate the Server Discovery and Monitoring spec.

Here so far:
-ServerDescription class
-TopologyDescription class
-topology monitor transition state machine
-slimmed down cluster and cluster node types.