Wrap driver classes directly and remove Connection reinit logic

Constructor signatures have changed. Collections and Databases are now constructed with the MongoCollection and MongoDB instances to be wrapped, respectively. The getter methods for driver classes no longer operate like factories (returning new instances on each call), which makes it possible to set and maintain read preferences.

The ability to reconstruct MongoClient has been removed from Cursor::retry() and Connection::initialize(), since that is not necessary for the driver to reestablish a database connection.

For the Loggable classes, the loggerCallable argument has been moved to the end of the constructor. This removes previous inconsistencies between Loggable and non-Loggable constructors.
Refactor retry() methods in Collection, Connection, and Database
Remove Database from Builder constructor
Convert inconsistent read prefs from pre-1.3.3 drivers

MongoCursor::setReadPreference() is not affected, since its method wasn't implemented until 1.3.3.
Don't throw InvalidArgumentException in Cursor::setReadPreference()

The driver may emit an E_WARNING for invalid arguments, but the return value should always be the MongoCursor (not a boolean).

Move the saving of readPreference and tags arguments after the driver method, so that we don't capture the arguments if an error handler decides to throw an exception.

See: https://jira.mongodb.org/browse/PHP-920
Support read preferences in Query Builder

Read preferences will be applied during cursor preparation. For read-only commands, the read preference will be temporarily applied to the database (most cases) or collection and then restored before the command's result is returned or its exception propagated.
Test driver 1.4.4 in Travis