Require find() to be called before update/remove bulk methods

Write terminators require a selector to be defined.
Legacy batches should validate and normalize add() arguments

Remove extra object casting from Bulk code, since command (internal to driver) and legacy batch classes will process the operations on their own.

Casting to objects to ensure proper BSON serialization was good in theory, but the driver converts fields such as "q" and "u" in an update operation to an array, which defeats the purpose. We do not need object casting for legacy methods, since those fields become direct arguments to MongoCollection write methods.

Normalization of arguments in the legacy add() methods is now consistent with the driver's own MongoWriteBatch::add() behavior; however, the legacy method will throw an exception if the argument is not an array or object instead of triggering a PHP error.
Refactor LegacyWriteBatch::execute() to avoid code duplication

Created executeSingleOperation() method within child classes. This will keep execute() readable once try/catch blocks are added later (around MongoCollection write methods).
Capture GLE response when legacy writes throw MongoCursorException

This is necessary to ensure write concern errors are collected and merged. This does not concern itself with connection errors (e.g. if the GLE command throws its own exception).
Initial tests for Command and Legacy batch classes
Remove MappedBatch::isEmpty() and private documents property

This method is unnecessary since getItemCount() is defined in BatchInterface. The $documents array can also be removed (it was a relic of older methods that allowed fetching a document by an index).
Do not update index map in MappedBatch unless add() is successful
MappedBatch tests
Tests for Bulk API method calls
Rewrite OrderedBulk functional test

Assertions for BulkResult values will be done in a separate test.
Remove obsolete BatchTest
Require driver version 1.5.3+ for MongoWriteBatch::add() API fix

See: https://jira.mongodb.org/browse/PHP-1106