This is a two pronged commit. Firstly we need to handle older versions
of git which lack support for recursively updating git submodules. In
order to handle this we try three separate git commands until one
succeeds and print warning/error messages as appropriate.
Secondly we should really update git submodules when 'make' is invoked.
Currently we only do this from the root makefile, though if we care enough
we can do it elsewhere in our build tree too. This means we no longer have
to run configure every time a submodule is updated just to get git submodule
update to execute.