I think `SetUnhandledExceptionHandler` is kind of junky. There's no way one piece of code can know how to handle all exceptions in all tasks without handlers.

If a task has generally been forgotten and dropped on the floor, I don't think you want to annoy anybody about it if it ends with an error. But if somebody calls `wait` on it, `wait` should propagate the exception. I think it would be enough to have `wait` and `yieldto` throw when called on a task in the exception state.

One problem is that the `task.exception` field is currently also used to pass exceptions to tasks, to make them throw when they are restarted. I guess this can be distinguished using `task.done`, but I'm not sure that's clear enough.