fix typo in Mongo::Collection#find_and_modify documentation
write operation refactoring
add documentation for upsert opt. on Collection#find_and_modify
minor: further improving Collection#find_and_modify documentation
BSON grow module

RUBY-676 New write operation method for insert, update, remove
Wait for replset optimes to catch up to the primary when testing

If we don't wait for the optimes to catch up and we do a force
stepdown, the old primary will just reelect itself, which doesn't make
for a great test of failover behavior.

This way, since the replset is caught up to the primary, there's no
need to pass force: true during the stepdown. We do need to bump the
timeout, though - 5s isn't necessarily enough for the nodes to
converge on a new primary.
Skip nodes in state REMOVED when looking at current replset state

REMOVED nodes don't have the current replset configuration, so can't
pick out which nodes are primaries/secondaries.

This is needed if the first replica server is removed from the replset
during testing.
Update edge case tests to work with the current framework
unfinish! uses @str.size instead of unrestored @cursor
RUBY-661 Change server op timeout code to 50
RUBY-661 Change name of max_time and update tests
RUBY-689 defaulting MongoClient#add_auth to nil

This is another private API in the client that wasn't correctly marked as such and when we added source to the method signature without a default value we broke anyone who was making use of this API.

This fix corrects that issue as well as a small correction to some of the documentation surrounding this functionality.
b_end! fix plus clarity
finish! fix and simplify finish_one!
RUBY-661 adding server_op_timeout to find_one
minor: fixing test harness for replica set initialization

It was _completely_ unreadable.
It's still terrible, but slightly more readable and a little less nonsensical.
minor: fixing race condition in replica set test harness
RUBY-661 Use new maxTimeAlwaysTimeOut option instead of JS clauses
RUBY-661 Update cursor tests to use new maxTimeAlwaysTimeOut option
Make tests with fail point option more flexible

Only check for version in the test helper