Fixed PHP-981: Empty document should not throw exception
Merge pull request #584 from bjori/PHP-981-empty-document

Fixed PHP-981: Empty document should not throw exception

* bjori/PHP-981-empty-document:
  Fixed PHP-981: Empty document should not throw exception
PHP-880: Add a helper to check if a feature is supported by the current Wire Version
PHP-880: Expose php_mongo_serialize_size()
PHP-880: Add couple of new exceptions for the new Write API

MongoDuplicateKeyException extends MongoWriteConcernException
MongoProtocolException extends MongoExceptions

MongoDuplicateKeyException will be thrown on duplicate-key errors
from the new write api.

MongoProtocolException will be thrown on "new" protocol errors,
and when we start breaking BC, will be thrown instead of
MongoCursorException on request/response id mismatches and
related errors which incorrectly throw Cursor exceptions for BC

Conflicts:
	config.m4
	config.w32
	php_mongo.c
PHP-880: Initial implementation of the new (2.6.0) Write API

Currently only supports inserts.
Use php_mongo_api_connection_supports_feature() to see if the server
supports this new API before use!

Conflicts:
	config.m4
PHP-880: Implement Stream Notifications for the new Write API

The old notification API was based around OP_INSERTs, which doesn't
make sense for the new API, especially since the new writes don't
follow up with a getLastError commands.

This new notification API adds two new functions:
php_mongo_stream_notify_meta_cmd_insert() (userland: log_cmd_insert())

It passes in:
- server (connection) info
- Inserted document
- Write Options
- Protocol options (message length, request ID, and command namespace)

php_mongo_stream_notify_meta_write_reply() (userland: log_reply())

It passes in:
- server (connection) info
- opcode info (length, request_id, response_to, opcode)
- reply info (flags, cursor id, start, returned)
Add missing vim modelines
PHP-880: Use the new Write API when Wire Version overlaps
Test for DuplicateKey exception and random inserts in the new api
Rename buffer to mongo_buffer
CS nitpicking
Fix inserting documents over the old API
Fix zts
Fix constant name
Skip tests that make no sense for the new write api
The error ok field in the error document doesn't mean the same thing in 2.6

also remove useless mongolog entries that are not vailable in the new impl
Fix tests

- Remove the MongoLog that adds no value
- The old ipmlementation silently overwrite 'safe' with 'w'
- Bump w= to actually trigger an error
We no longer call gle.. so ignore it if its in the log
Fix test

'safe' was silently overwritten with 'w'.
The query/command logging also hits different triggers now, since writes are commands..