Don't push divergent remote branches with keep_divergent_refs
Previously, if a remote branch had completely diverged from the source (i.e., it is no longer an ancestor of the source), we'd still attempt to push to it and would only realize it failed when the server came back with an error.
Now when selecting local branches to push to the remote, the
keep_divergent_refs
option allows us to limit the list to only
branches that have no divergence.
This is an alternative implementation to !1899 (closed) suggested (and largely implemented) by @jacobvosmaer-gitlab.