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.