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.
Ruby lets you combine this with the previous `when` by using commas.