RUBY-686 using set for auths to fix issues with logout

- Switching MongoClient#auths to be a Set rather than an Array (still
Enumerable) so that we can fix an issue with logout and be a little more
intelligent when applying auths to a given socket.

- Consolidated requires for 'set' and 'thread'
RUBY-697 Support nolock option in DB#eval
RUBY-686 URIParser support for authMechanism and authSource
RUBY-686 mongoclient changes for auth refactor and light cleanup

* Using a Set instead of Array for MongoClient#auths
* Behavior correction: default DB is now 'admin' (same as all other drivers)
* Moved an undocumented internal method to private
* A little light style/format cleanup (if you touch it make it better!)
RUBY-686 test coverage for authSource and authMechanism support

* additional tests to cover URIParser support for authSource and authMechanism
* updated existing tests for the related changes