* *(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.