add utils.submodule
use utils/submodule in setup.py

`setup.py anything` will halt with an informative error
if the submodules are unclean.

It will fetch the submodules if they are entirely absent.

Nothing will happen if it is not a git repo.
check submodules when starting the notebook server

shows a warning (not an error) if components are out of date.