repo init: Trigger init on version change

Right now repo init used a boolean flag to mark the repository as initialised.
This is not sufficient in case of a SalsaFlow upgrade, because the repository
will remain being marked as initilised while it can be necessary to run repo
init again.

So, from now on it is not a boolean flag that is marking the repository as
initialised, it is the version string. This can be easily used to detect whether
we need to run repo init again or not.

The hooks that are installed as part of the repo init process were also improved
to print the SalsaFlow version they are associated with. Every hook can be run
with -salsaflow.version flag and it will just print the version string and exit.

Change-Id: 0b335d00fb
Story-Id: SF-69
app: Rename MustInit to InitOrDie

Change-Id: a682c99903
Story-Id: SF-67
git: Prepare for config refactoring

Pulled some functions into a separate package, git/gitutil, because we will need
to break an import circle for the config refactoring in the following commits.

Change-Id: d8ebe787c5
Story-Id: SF-67
config: Refactor config handling heavily

Basically the whole config handling was rewritten and refactored to make more
sense for the current code base. There is no global config loading function that
must be called at the beginning of every command any more, the config package
takes care only of reading and parsing the config files.

The rest of the config processing was pushed into the packages where it makes
the most sense, i.e. the git branch names can be got by calling git.LoadConfig.
Modules and their config works in the same way. This makes the whole config work
on demand, getting rid of initialisation problems. If you need config, simply
call the relevant function to get the right config struct.

Also the local config file is now read from the working tree rather than from a
branch. This makes it possible to actually make the trunk branch name
configurable.

In general more things are configurable now, including the project remote, which
is by default origin, but can be set with git config as salsaflow.remote.

Change-Id: 5f57ef0f29
Story-Id: SF-67
Rename msg to task in the whole repository

Started to think that 'task' makes more sense as the variable name for the task
name that is printed to the user when something is run or something fails.

Change-Id: 22b0d4f36c
Story-Id: SF-67