Reland "[DL]: Implement updateAndCommit().""

This reverts commit 544bd17c157f182cfae5ccd6fe9415ddb12262b3. In other
words it relands the updateAndCommit() functionality with a fix to
not change the used budget. The accidental change to the strict yielding
budget revealed a use-after-free bug, which is being fixed in a separate
patch.

The original updateAndCommit() description:
"""
This patch adds updateAndCommit() which updates the subtree cooperatively
and then commits.
"""

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Ib62989ee51cd7da143d2f81a9ba674659365a20e
Reviewed-on: https://chromium-review.googlesource.com/c/1440830
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#626812}
19 files changed