Auth

A first stab at a new authentication model.  Feedback welcome :D

I'm using "authenticator" to describe an object representing a set of credentials and a client and socket on which to authenticate.  An "authenticator" is "authenticatable," and should know how to log itself in and out of its connection, and validate the credentials passed to it.  The following auth mechanisms each have their own "authenticatable" classes:
-sasl plain
-Mongodb-cr
-x509
-GSSAPI

Some of the things I have to add to this, besides just filling in the existing classes:
-client-level authentication management, in auth.rb
-rspec tests
After our discussion with Jeff, I believe you will be getting a `Connection` object here instead of a `Server`, and you can just call `dispatch` on the connection since we removed it from server.