Bulk write API

RUBY-676
Handle Bulk API versus server version / max_wire_version
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 auth mechanism and auth source
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!)
* Standardized on db_name over default_db in MongoClient
RUBY-686 test coverage for auth mechanism and auth source support

* additional tests to cover URIParser support for authSource and authMechanism
* updated existing tests for the related changes
RUBY-686 relocation and refactor of issue_authentication
RUBY-686 relocation and refactor of issue_logout
RUBY-686 legacy wrappers for issue_logout and issue_authentication
RUBY-686 updating pool and socket to use set comparison for auths
RUBY-667 user command helpers and update to auth tests
Add support and error for digestPassword option
minor: hash args style updates
minor: no need to rescue error in auth test
Document new user command private methods as such
Merge branch '1.x-stable-ruby-676' of github.com:gjmurakami-10gen/mongo-ruby-driver into gjmurakami-10gen-1.x-stable-ruby-676
Fix remove_all_users command to match current server code
minor: fixing license date per request from legal
minor: fixing auth tests for logout failures