Add temporary callbacked wrapper for module startup

When all is said and done with the module conversions, all lifecycle functions
will run on the lifecycle managment thread, which can be blocked while waiting
for futures.

This CL means new modules can depend on that fact during start_up, alllowing
newly converted modules to be spliced into the existing startup callback madness
without having to sacrifice clean implementation.

We can add other callbacked lifecycle function variants as necessary.
2 files changed