update Server Discovery and Monitoring spec testing

Switched from YAML tests to JSON tests.  Dropped YAML::XS dependency
and added JSON::MaybeXS dependency instead.

Tests updated to SDAM tag server-discovery-tests-2014-09-22.
drop JSON module in favor of JSON::MaybeXS

JSON::MaybeXS is more compatible and works around various upstream
JSON engine idiosyncracies.
grand renaming: cluster is now deployment or topology

The use of "cluster" is now restricted just to mean a "sharded cluster"
deployment.  In other uses, "deployment" refers to a set of servers
and "topology" refers to the state of those servers.   The "clusters"
directory of development testing config files has been renamed "config".
remove unused legacy test files
clean up tag set logic and usage

This fixes the application of tag set lists to NEAREST, and brings
the names of variables and methods into alignment with the draft
server selection spec.

Also, the use of the term "tag set" and "tag set list" and related
variable names has been made more consistent with the spec.

The term "tags" is still used by the _Server class for consistency
with the ismaster command result and the SDAM spec.
PERL-429 fix tag_sets logic
scan during selection if heartbeatFrequencyMS elapsed
expanded exception hierarchy
revised networking-related classes to use new exception classes
add error class to stringfied message
convert more _Topology confess calls to exception throws
catch network and not master errors to update topology
retry network errors when monitoring
tidy _Topology code
implement socket_check_interval_ms
devel: try again to bring up a server that isn't responding to ismaster