Fix pipeline failures for established forks
If the following happens:
- a GitLab runner recursively clones a superproject
- one or more submodules has changes upstream and the submodule references in the superproject have been updated to point to it
- a new pipeline is launched for the new superproject revision
then, while the runner would fetch changes to the superproject, it wasn't
doing so for the submodules. Ironically, we do both
git submodule update
git submodule update --remote in different pipeline stages and the
latter includes an implicit submodule fetch - but that was the later stage
which we don't get as far as.
To fix this, while retaining the pipeline stage order, include an explicit fetch in the earlier stage (and remove the implicit fetch in the later one, since that now merely wastes time).
I have included the commit from !1 (merged) here, on the assumption that it's not contentious, which will save having to rebase this MR prior to merging.