build: Don't reuse previous metadata if patch URI is local:

Revision might not change for local patches.
vcs: Make submodule processing on checkout fully recursive

Recursively checkout submodules.
vcs: Parse git submodule status output correctly

Submodule status may include remotes references and relative
paths so we need to parse it and retrieve the revision and name.