Fix git status parsing

The previous behaviour only checked for assumed possible states,
which is not a safe way to go. The behaviour of the git client might
change in what combinations are possible.

The previous behaviour missed some "deleted" lines in `git status`.

With the new behaviour, all combinations one can think of are checked.
This way, also the missed "deleted" lines are caught.