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. 
Don't think this is possible. squash_merge_into_main_branch needs to leave you on the main branch in case the squash merge errors