Manage job completion through Executor::Context instead of a free callback
Local executor that runs commands in a temp dir
fix web
Send logs to browser
Keep old jobs around, since we don't put them in a DB yet
web: fix variable names to avoid shadowing, export properly
Fix default implementation of run
Simplify Job constructor args
Catch errors in Job::run
Catch double-completions
Errors may not be Error objects

JS errors should be Error for stack traces, but these errors can
originate outside JS and it's useless to have an internal JS stack trace
shown.
context `then` callbacks have context for `this`
context: `cd` and `env` commands
ui: default to `name` if `description` is not set