Fix submodule conflict checking, missing remotes, repo logic error

The git reset process called after attempts to merge did not resync submodules, resulting in spurious errors. Add logic to git_reset_to_ref to make it also update submodules.

Conflict detection would also fail when attempting to compare to a branch that was not already known to the local git repo. git_merge_pickme now calls through to add_or_update repo to ensure that the remote to be checked against is present before proceeding. This added logic required moving git_merge_pickme into the GitQueue class.

Finally, a logic error was present in that the submitting user was used as the remote when adding dev branches to git. While these are often the same, repositories can be set differently, which would not be respected by the old code.