PHP-708: Implement WriteConcernException for GLE errors

This also adds error checking for the GLE command itself, using the same function that findAndModify() uses to inspect the command response.

If the GLE response is successful, the write operation is considered to have failed if the "err" field is a non-empty string. Previously, we sourced the message and code from the "errmsg" and "n" fields, respectively, which was incorrect.
Change mongo_cursor_throw() to require exception class entry

Rather than infer the class entry (previously Cursor or CursorTimeout) from the error code, explicitly provide it. This makes it much easier to throw WriteConcernExceptions consistently (ensuring the host prefix and property are set) without having to anticipate error codes in GLE responses.
Do not use CursorTimeoutException for server-side cursor timeouts
Add missing proto to CursorException::getHost()
Add host field and getter to ResultException class

MONGO_CMD() does not reveal the connection used for the command, but we will be able to set the host if a ResultException is thrown due to GLE command failure.
Make document field on ResultException private

We have a public getter for this property, so there's really no reason it should be public.