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. 
So does this mean you rely on being in the correct branch now? This seems brittle. What if a previous command changed the branch?