SERVER-12380 Refactor update() and receivedUpdate() for better reuse.

This patch introduces an UpdateExecutor type, that encapsulates the work of
performing a database update, described by the existing UpdateRequest type.
This includes any necessary parsing and also driving execution of the match
query and the update transformations.  The UpdateExecutor interface makes it
convenient for users to prepare the operation to the greatest extent possible in
an unlocked context, without having to know the details of what that preparation
entails.