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 thought the "undo" commands should be pretty similar to the "do" commands. In the way they are defined, in the way they work, and in the way they are executed.

Given that the "do" commands use "run_command" internally to get things done, I think the "undo" commands should do the same.