Make app.is_git_controlled() cheaper
Add git module and test file

git module contains:

Git(object) class implementing functionality to manage
a git repository.
Currently this is only the repo Frescobaldi lives in, but later
we will also use this for managing project repos.

GitApp(Git) class used for the
app.repo
object representing Frescobaldi's repo.
Implements app.repo.upstream_remote()
Show Git branch/remote in Window title bar
Add initial Git.checkout()

For now it simply issues 'git checkout BRANCH'
Fix Git._run_git_command argument handling

When a single string is given as an argument (instead of a list)
we have to check for str _and_ unicode,
otherwise the string is exploded to a list.
Add app.repo.active_branch()

current_branch() may change during Frescobaldi's lifetime
while the application is run from the branch that was
current on startup.
Fix Git.checkout()

add the -q option because checkout returns its result
message to stderr
Add Git.tracked_remote_label()

return either 'local', the name of the remote
or remote/branch if the tracked branch has a different name.
Add Git menu

For now simply list all local branches.
Clicking on a branch tries to checkout this and restart the application.
If git gives an error (e.g. non-clean working tree) it aborts with a message box.
If checkout succeeds the user gets a message box and can restart
Frescobaldi now or later.
Add AbstractVCSRepo class

Make the Git class an implementation of an abstract class.
Currently we're only talking about supporting Git, but when
we're implementing workflows for LilyPond projects it would be
nice to support other VCS too.
If we want this one would simply have to create a new derived class
implementing the API, and maybe implement a way to chose the right
VCS subclass for a given directory.