Handle errors during task execution by storing in execution.el * execution.el (execution-result::error): new slot; stores error data that is generated during execution (execution-result::has-result-p): new method; check for result (execution-result::has-error-p): new method; check for error data (execution-result::future-done-p): use `has-result-p' and `has-error-p' (execution-blocking-result::initialize-instance): store signaled errors into error slot of result object (execution-result-idle::initialize-instance): likewise (execution-result-timeout::initialize-instance): likewise (execution-result-thread::initialize-instance): likewise * TODO (how to handle signals): marked as DONE