Teach BranchUpdater to set merge branch directly

This PR lets us set the upstream remote and merge branch onto a local branch directly.

This is useful when we are pushing a new local branch to a remote and want to set the upstream tracking info. Instead of performing the refspec transform to identify the name of the tracked branch in the `refs/remotes` namespace, we can set the merge branch directly (e.g., using the transforms exposed in #349)