Changed
- Invocations, startups tasks and shutdown tasks are now all run sequentially.
- Improved error handling, if an Invocation errors, or a Lifecycle startup tasks errors
then the Engin will exit. Whilst errors in shutdown tasks are logged and ignored.
- Improved error messaging when Invocations or Lifecycle tasks error.
- Removed non-public methods from the Lifecycle class, and renamed `register_context` to
`append`.