add git hooks for submodules

A much less intrusive version of #3274 that has effect on checkout / pull / merge,
rather than setup.py.  It does require a user install step,
because you cannot add active hooks to a repo.
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.
mention git hooks in top-level readme
add LevelFormatter for extra formatting on high level messages

the asctime datefmt is also configurable now
use highlevel in notebook log format

datefmt no longer necessary
use LevelFormatter in parallel apps
tweak default highlevel_format
demote connection info to log.info

also rprint if no parent (`ipython kernel`)
use check_call in update_submodules
Merge pull request #3275 from minrk/submodule-hooks

improve submodule messages / git hooks