Authentication, Part 1

This is the first part, with the exception of Kerberos not there yet, and still needing some more tests around travis - just need to find a good way to do that. The basics of the rest is all here, CR, LDAP, and x.509 are supported, and connections automatically authenticate themselves when connecting and flag themselves unauthenticated when disconnecting.

Part 2 will include more tests, Kerberos, and probably some convenience changes to `Mongo::URI` for better options passing to the `Mongo::Client`.

cc/ @samantharitter @estolfo 
I have an executable module in the operations modeling. Do you think it would be confusing to have two modules called executable? They're in different namespaces, so there isn't any real clash.