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. 
All the commands touch at most three branches. The current branch, the main branch, and  possibly creating a third branch. 

I think it's more intuitive this way as git commands all run on the current branch.

As you saw with pull_main_branch, I like commands to return you to the branch you started on. If we keep that true throughout the functions, I think that's more solid.