* *(types)* Changed `set_thread_parent` to inherit the existing thread parent
if a `MessageEvent` is passed, as starting threads from a message in a thread
is not allowed.
* *(util.background_task)* Added new utility for creating background tasks
safely, by ensuring that the task is not garbage collected before finishing
and logging uncaught exceptions immediately.