Refactor git helpers

Now the git helpers do not make use of `$initial_branch_name`.
The functions no longer rely on global state (aside from `initial_open_changes`), but I have an idea of how to remove that as well. 

This came about through my need to be able to push and pull a non feature branch. 
I started that way. Then I found that it becomes more and more ambiguous on which branch I am after jumping back and forth between branches for a while (for example during git-sync). And in the end I found it more readable to provide the branch name to each command ("pull the master branch", then "update the feature branch"). 

But maybe if we do this more consistently, and have each command return to the originating branch unless its obvious from the name that it changes it, it can work.