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
The ruby convention here would be to just use lower case symbols, since it's coming from an options hash and there would be no need to `upcase` at line 69.