Add dependencies to shutdown service schema

Prior to this commit the shutdown service did not have any
dependencies (input schema), which meant that it could
be loaded at any time during graph compile... and if it
happened to be loaded before other services that had
shutdown hooks, then their hooks wouldn't be called.

This commit adds some extra checking during the shutdown
hook registration that causes the input schema of the
shutdown service to be updated to explicitly include
all of the services that have shutdown hooks.  This
guarantees that those services will load before the
shutdown service, and thus, their hooks will be
visible to it and will be called correctly.
Move map functions to their own namespace
Move jar/manifest logic to own namespace
Refactor service graph logic into service-utils namespace
Very basic implementation of monitor service