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
What do you think about having the respective commands define their undo commands?

```bash
function stash_open_changes {
  define_undo_command "restore_open_changes"
  run_command "git stash -u"
}
```

`define_undo_command` writes the undo command into a temp file. To append the current undo command to the undo command list you do a simple file operation like `cat tmp | cat - undo-list > undo-list`