Merge pull request #240 from uliska/fix-non-git

Deal gracefully with missing Git installation
VCSRepo: Add abstract fetch() method
Make _run_git_command() more flexible (error handling)

As it seems Git commands are quite 'versatile' with regards
to their output on stdout and stderr ;-)
Therefore it seems better not to raise exceptions in the
basic _run method, even if that means more and some
redundant code in the higher-level caller functions.

_run_git_command() now returns a tuple of
- the stdout result (formatted as a list of strings)
- the stderr output.

Calling functions should handle the presence of 'error'
themselves, deciding whether to raise an exception or not.
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
Fix import in vcs.menu
Let _run_git_command use QProcess WIP

Doesn't work at all so far:
- don't seem to be able to catch stderr
- instead the process always returns with 5 ("unknown error")