Log exceptions that occur during bootstrapping

Prior to this commit, if an exception was thrown during
bootstrapping (e.g., during an `init` or `start` lifecycle phase),
we would correctly bubble that exception up to the main thread,
but we would not write it to the logger.  This makes it
difficult to see what's going wrong in a production environment.

This commit adds a try/catch to log these exceptions and
re-throw them.