This helps avoid the errors when a new commit from upstream is not yet
available in the fork, resulting in a HTTP 404 when trying to update the
ref in the fork.
If the merge-upstream API is unavailable (404) or errors out (409/422),
the functionality falls back to the previous functionality of manually
updating refs. This ensures that `--force` still has effect.
- If the local branch already exists, use `git update-ref`
- If it needs to be created, use `git branch <newbranch>`, but don't
switch to the new branch
Bonus fixes
- Enables operation while on detached HEAD
- Enables operation even when the current remote doesn't track all
branches in the remote repo (uses FETCH_HEAD instead of the
`<remote>/<branch>` syntax)