PHP-1156: Negative timeouts block, zero timeouts use default

Since mcon does not depend on PHP, we use the default value for connectTimeoutMS when reading sockets with an unspecified timeout. In practice, this is only when both connectTimeoutMS and socketTimeoutMS are explicitly set to zero in MongoClient's connection options, due to the ternary statements in mongo_io_recv_header() and mongo_io_recv_data(). The connectTimeoutMS default is used because it is equivalent to default_socket_timeout, which is used by streams.
PHP-1155: Fix reverting to default timeout and don't swap unnecessarily

This ensures that we do not leave the stream in an inconsistent state after applying a temporary timeout value in php_mongo_io_stream_read(). Also, if the runtime timeout is equivalent to the existing value (e.g. two negative values), there is no need to swap.
Merge pull request #722