Write operations in core

This is probably easiest to review commit by commit.  

The first commit is just to use Delete instead of Remove in core, to be in line with the server and the CRUD spec

The second and third commits are about removing the distinction in core between update and replace, except at the lowest levels where we have to do validation of those documents.

The fourth commit is just some cleanup that I noticed while doing the third.
There is no head room for the q and u documents individually.  The server still requires those to be <= 16MB.  The head room for each document in the updates array defined here:

https://github.com/jyemin/mongo-java-driver/blob/replace-out-of-core/driver-core/src/main/com/mongodb/protocol/message/BaseWriteCommandMessage.java#L38