fixup! submodule: simplify decision tree whether to or not to fetch
fixup! submodule: extract function for fetching a submodule
squash! implement fetching of moved submodules

TODO: figure out behavioral change in on-demand mode when no name for
submodule is available through .gitmodules or .git/config. Previously we
were still able to fetch based on the path, since we had a list of
changed_submodule_paths.
Merge branch 'hv/fetch-submodules-recursive-fixup' into hv/fetch-submodules-recursive

Conflicts:
	submodule.c