resolves #199: command list architecture

@kevgo 

At the moment only git-sync has continue scripts. After this is merged I will add continue scripts to each command that could support it one at time.

* I created new stash_open_changes and restore_open_changes functions in order to get rid of the need to set variables in abort / command list / undo scripts.
* Removed apart sync_branch as a command in that may error and its easier to see without it. 
* Removed pull_branch as it was causing a fetch to occur in the continue scripts
* Created a temp_filename function as the bash linter didn't like having a file being read and outputted to in the same line
I would argue that removing the step list when it is empty is not the right thing to do here. This is a code smell similar to returning `null` instead of empty arrays. The right thing to do here seems to remove the last line from the file, and leave it empty. This allows the steps that add things to it, or check whether we have commands left to be much easier. 

We should then consistently create or destroy the step lists at the beginning and end of the scripts.