Git Backend refactoring and improvements

### Summary

* Unnecessary duplicate `git fetch` removed (see 2218484)
* Submodules should work properly now (#606, see 44e911f)
* Repo URL change does not cause `git clone` anymore (doing `git remote set-url` instead, see f50a5fa)
* Using `git checkout` instead of `git reset` to jump to a specific revision (see 3dda85b)

I have tested these changes with a local instance of RTD and it worked as expected. If there are any questions or issues with the code please let me know.