submodule: add submodule support

Closes #408.