Jeversmann/git repo refactor

I tried to push the logic for handling repo urls into the RemoteServer classes, and then used delegating to preserve the old Repository methods. A bunch of specs had to be moved/rewritten after the refactoring and the RemoteServer constructor change. GitRepo now has private methods to handle submodules, which use RemoteServers to rewrite the submodule urls.
I added the RetryPartitioning endpoint because rebuild failed parts doesn't affect builds that error in partitioning, making them unsalvageable.
when raising `RefDoesNotExist` I think it would be helpful to pass a message that includes the ref that lookup failed for.