GitRepository refactoring

This cleans the git code a little bit and puts things into better places.
* move some methods from `Repository` to `GitRepository` that actually belong there
* use more delegates
* use less `@repo`
* rename variable `url` to `path`
style: do not use one-char-var-names for multiline-blocks( `|r|` -> `|ref|`)