RUBY-543 PoolManager#refresh Causes MongoReplicaSetClient to Exceed Max Pool Size
The following does not read well but is (backwards) correct

lib/mongo/util/pool_manager.rb:147

    def validate_existing_member(member)
      if member.config
        return false
Revert "RUBY-543 PoolManager#refresh Causes MongoReplicaSetClient to Exceed Max Pool Size"

This reverts commit 284b69c7a632ee4cb7d4d683350914e736025f8f.
RUBY-543 only refresh if it is actually needed
Always get primary pool with a sharded client.

In the case of a sharded client, all of our nodes that are provided
should be mongos nodes, and thus all should be primary. The read
preference thusly is not handled by the driver, but by the mongos server
and all read operations should pass through the primary mongos.

The case where we have multiple mongos is not handled here, as the
driver does not currently support having multiple primary nodes
configured.

[ RUBY-542 ]
RUBY-542 MongoShardedClient does not support read preferences correctly
unstable-release moved to 2.4.0-rc0 where maxMessageSizeBytes changed to 48000000
RUBY-543 stop using thread local, start pruning dead threads
RUBY-543 don't just pick the first idle_socket
RUBY-543 prune on an interval vs every checkout
Spelling
RUBY-545 fix for KillCursors routing
RUBY-545 only checkin socket if it was not provided
RUBY-548 As an engineer, I want to improve code coverage
SimpleCov must load before our code - and when properly configured, a coverage report summary line will print after each test suite run
gem 'test-unit' is explicitly needed in test_helper.rb for Test::Unit::TestCase.shutdown
Test::Unit::TestCase.shutdown is run to clean up after an individual test
Test::Unit::TestCase.shutdown is run once for replica set via mock test suite
rake tasks should be executed (not invoked) because we want to re-execute them, once for with-ext
 (test:ext) and once without-ext (test:ruby)
Initial coverage is 79.78%
RUBY-550 adding test to reproduce timeout socket mangling
Support read preferences in URI parser.

This will parse and add read preference options from the uri parser and
add them to the connection options when asking for them. This makes the
assumption that we must be in a replica set to set the options, and will
override the slaveOk flag if it is also present.

The fix for RUBY-541 will change this slightly to assume it can be set
for replica sets and sharded clients.

[ RUBY-547 ]
Initialize MongoShardedClient with MONGODB_URI.

This fixes the errors that were occurring when instantiating a
MongoShardedClient when a MONGODB_URI environment variable is present.
This also fixes MongoShardedClient.from_uri to properly get a
MongoShardedClient connection from the URIParser.

[ RUBY-541 ]
RUBY-554 disable caching in java extension
RUBY-556 fix potential deadlocks with broadcast
RUBY-550 socket util module and refactoring
RELEASE 1.8.3.rc0
generate distinct SimpleCov command names and pass them via ENV to test_helper

RUBY-548 As an engineer, I want to improve code coverage
coverage 86.7%