Disallow UPDATE multiple operations on the same field and restore the single-pass update.

Misc cleanup:
Rename UPDATE_OP enum, drop the define.
Update tests.
Now that there is always a new destination,
we don't need a temporary buffer for splice or
anything else. Remove it.
Remove works_in_place, since it was also necessary only
to support multiple operations.
Update comments.