move public methods before private

RUBY-676
minor: removing useless ternary operator in read pref module
concise #op_args_set, #op_push, #initialize_copy Ruby way

Write commands 0.5
RUBY-676
merge Write Commands Specification 0.5
split #insert, refactor send_write, remove/delete with :limit

RUBY-676
RUBY-614 support for SASL PLAIN authentication (LDAP)
RUBY-614 test coverage for SASL PLAIN support
Documentation for bulk write API and #remove with :limit opt

RUBY-676
minor: removing unnecessary username in sasl plain
RUBY-698 adding deserialization options to collection#find and bson
#insert optim with respond_to? plus documentation tweak

RUBY-676
Fix min_key decoding on ARM RUBY-704

Tested on armhf - Raspberry Pi.
Merge pull request #312 from behackett/1.x-stable

Fix min_key decoding on ARM RUBY-704
Merge branch '1.x-stable-ruby-676' of github.com:gjmurakami-10gen/mongo-ruby-driver into gjmurakami-10gen-1.x-stable-ruby-676
minor: adding MONGODB qualifier to all auth test env vars
Merge branch '1.x-stable' of github.com:mongodb/mongo-ruby-driver into 1.x-stable
run unordered bulk operations in one batch per write-type

RUBY-676
Headroom defined for max sizes with correct handling

RUBY-676
RUBY-648 adding support for MONGODB-X509 auth mechanism
RUBY-648 adding tests for MONGODB-X509 auth mechanism