Fixes PHP-682: Remove redundant MongoGridFSCursor::key() implementation

This was changed in 1.3.0 to return the document _id, so it can simply extend the base MongoCursor::key() method now.
Merged pull request #285
Fixed PHP-658: Add error codes for GridFSExceptions
Test for exception codes too for PHP-658
Merged pull request #279
Move options from mongo_server to mongo_server_opts

This makes it easier to pass around all options, for example to fix
PHP-356 (driver does not honor connection timeout)
Fixed PHP-356 (Driver does not honour connection 'timeout')

The function already supported getting passed in a connection timeout
but the passed in value was hardcoded.
To be able to retrieve the user specified connection timeout we need to
pass in the mongo_server configuration options (mongo_server_opts).
Rename *_opts to *_options as that's how it's used everywhere elase.

Also changed some of the CS - it's in new code, so shouldn't conflict.
Merged pull request #286
Fixed PHP-683: Add support for the connectTimeoutMS connection parameter
Make sure the final value ends up below the replaced value in the logs.

I've made sure that atoi() is only run once. I've added a title for the test,
and made sure that the test works with replicasets (which have an extra option
to spit out).
Merged pull request #287
Fixed PHP-685: wtimeout option is not supported per-query

We simply never checked for the option in the options array.
Now we'll fall back on the MongoCollection->wtimeout (which inherits the
wtimeout from MongoDB->wtimeout, which is set by the connection string,
or defaults to PHP_MONGO_DEFAULT_WTIMEOUT)
Tweaked log messages and fixed all remaining test cases.
Fixed test case - I can actually replicate that fast.

Setting w=7 as we do that for some other tests to test timeouts as well (f.e.
in replicaset/bug00569-004.phpt).
Merged pull request #290
Add support for wTimeoutMS in the connection string as per the spec

We previously supported the incorrectly named "wTimeout" setting, and
continue to do so. See PHP-613
Refactor option parsing just like as we have for connection timeouts.

Added a test case, as well as fixed another one after changing the message -
which is now inline with the connectTimeoutMS options as well.
Merged pull request #293
Fixed PHP-684: add support for socketTimeoutMS

Also renamed that ambigous PHP_MONGO_DEFAULT_TIMEOUT to
PHP_MONGO_DEFAULT_WTIMEOUT

We now apply the socketTimeoutMS option if the user hasn't explicitly
modified the MongoCursor::$timeout variable