make app.is_git_controlled() cheaper

dont try every time if the .git directory exists, instead remember the
result of the first call and return that next time.
separate logic
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.

To be coherent: rename git module to vcs
remove debug print
some more readme/dev
VCS/Redesign file/import structure

app is now cleaned from all VCS stuff,
info too.

the vcs module is very small and contains
vcs.app_is_git_controlled()

vcs is initially imported in main.py,
and when appropriate loads vcs.apprepo,
the class managing Frescobaldi git.

apprepo.py, gitrepo.py and abstractrepo.py
are now independent files that can be imported
when necessary.
When someone wants to implement classes for
other VCSs he will have to add a new file with a
class subclassing AbstractVCSRepo from
abstractrepo.py
Oops: Fix check for git repository
Make lookup of frescobaldi git dir cleaner
Fix an import statement
Merge pull request #223 from uliska/git-menu

Please test Git menu
preview-doc: Add note about grob name/anchor issue