This replaces the old submodule API with a new extended API that supports most of the things that can be done with `git submodule`.