Submodules are now handled correctly

This is a little bit of a nasty algorithm that first sets aside any
(sub)modules who don't claim a ModuleLoader as a parent, and then
iteratively goes over these submodules to merge them with proper
top-level parents. This closes #23.