Essentially, rework the existing `try_commit` methods to do prep and return a cleanup function, rather than both as a context manager. The original `try_commit` methods remain functionally equivalent, and simply farm work out to the new `prepare_try_push` methods.
This is a necessary refactor to enable measuring prep, push, and clean times separately.
Differential Revision: https://phabricator.services.mozilla.com/D278172