VCS: Cosmetic touch to git checkout
VCS: Implement git fetch

Currently only works when the user has configured git
so it doesn't need interaction (e.g. passwords) when
communicating with the remote server.

Simply passes stderr output to the caller, so the calling function
(e.g. in the GUI) has to determine if an 'error' is regular info
output or indicates an exception
VCS: Add differing_commits() method

Compare local with (already fetched) remote branches.
Return
- remote_branches (that aren't present locally)
- local_branches (that aren't present remotely)

Can be used to determine the need of updates
VCS: Add app_repo.update() method

- Fetches from wbsoft/frescobaldi
- Determines if there are fast-forwardable updates
  (raises an exception if there are non-fast-forwardable updates)
- Switches to master
  (currently raises an exception if working tree isn't clean.
   Should this stash instead and reapply stash later?)
- performs fast-forward
- Switches back to previous branch
  (GUI should ask what user wants:
  - checkout and restart to master
  - continue current working session
  - try to rebase current branch to master and restart)
- returns a list of the commit messages of the applied updates