Can still go wrong if the submodule name contains an equal sign or a
period, or the value contains a newline. But since this isn't dealing
with arbitrary data, that seems unlikely.
Now get_modules works if there are no submodules, and stop throwing
exceptions for unusal submodule urls, since odeint has an external
documentation submodule.