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
Not necessary to have it here - we'll get a `NoMethodError` if it wasn't implemented, which is better.