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`
That seems a little bit strange. The default for path is `''` (the empty string). If the default were to be used this line would not change the path (so it would still be the empty string). This line however seems to suggest that the default should be `'/'`.