add as_string method to ReadPreference
add 'error' attribute and status_string method to _Server
add 'accepts_wire_version' method to _Link
fix digested password bugs
add DEFAULT auth mechanism type
wrap GSSAPI in a try block for a better error message
implement SCRAM-SHA-1 authentication mechanism
minor fix to MongoDBTest testing library
Revise socket handshake and report errors on selection failure

This commit revises the handshake algorithm to process the isMaster
result to update the topology before attempting to authenticate.

Errors though the process are recorded into the server descriptions
and used for more informative error messages if server selection
fails.  Specifically, on selection failure, the deployment members
are shown with type and error (if any).
tidy code
add/update authentication tests
PERL-408 Implement SCRAM-SHA-1 and revise handshake

This merge revises the connection handshake to update the deployment
topology before doing authentication.  It also resets all servers to
Unknown and throws an error when any authentication fails.  These
behaviors are still under discussion and may be subject to change.

Other commits rationalize other auth mechanisms and tests to take into
account these changes.