Plumb mutation method return values through to callbacks.

Also:
* Fix some bugs: compareResults wasn't working so well; insertedId return values
  weren't being passed through replaceTypes; a few places where options objects
  weren't being treated as optional.
* Duplicate upsert tests for async upserts (with some changes to account for the
  fact that updates and removes can only be by id). Maybe this can be cleaned up
  to be less duplicate-y.
* Still need tests for async update/remove return values.
Add a test for update/remove return values over the network.