Tweak shutdown service registration mechanism
Create `services` namespace to abstract bootstrapping details
Initial working implementation of plugin loading
Added shutdown hook for http service
Add shutdown hook to plugin webservice

This was mostly just to validate that shutdown hooks work with
plugin services, as opposed to just the main app services.
Added validation of service output schemas

Defining service fnks that don't expose interrogable output
schemas can cause all kinds of weird errors during
graph compilation, most of which are not very useful and
hard to debug.  This commit adds a validation step
before graph compilation that will detect any services
with incomplete / missing output schemas, and will
throw a descriptive error if any are found.