Add description change events.

Further along the server implementation card, this commit introduces the
ability of a server description to update itself with the result of an
ismaster command. The result of any changes will fire corresponding
events to the server, starting with a host being added or removed in a
replica set.

This is part of RUBY-677, but does not complete it.
Add logging to added/removed events
Refactor socket creation.

This is the first part of a refactoring after I saw a better pattern for
handling socket creation which didn't require us to do the DNS lookups
twice.

The first DNS lookup is done in the address class, and then split out,
so it made more sense to generate the sockets from the address itself,
which cleaned up all the ugly handle_connect code that was still around.
Further refactorings in socket areas
Rename sock to unix
Removing more duplicate code in sockets
minor: fixing tests, stdlib logger require was missing