ASYNC-76: allow exceptions on 'go' thread pool to propagate

Commit 65b2d6c8 added a try/catch around the execution of tasks in the
thread-pool-executor, ostensibly to aid in debugging the changed arity
of the callback function passed to `put!`.

As a result, it is impossible for application code to take advantage
of the default mechanism in the JVM for handling uncaught exceptions
on arbitrary threads, Thread.setDefaultUncaughtExceptionHandler.

By reverting this change, we return to a state in which unhandled
exceptions in callbacks or `go` blocks will be invisible by default,
but we allow applications to choose how to handle exceptions.

In the absence of any other built-in exception handling strategy,
documentation should show how to use
Thread.setDefaultUncaughtExceptionHandler to log or print exceptions.

Signed-off-by: puredanger <alex.miller@cognitect.com>
ASYNC-76: allow exceptions on 'thread' to propagate

Similar to 3ea853e.

The thread pool for 'thread' and 'thread-call' catches all exceptions
and prints them. As a result, the exception can never be handled by
the JVM default uncaught exception handler, and the channel returned
from 'thread' is never closed.

This change forces 'thread' to close the channel when there is an
exception and allows the exception to propagate to the default
uncaught exception handler.

Signed-off-by: puredanger <alex.miller@cognitect.com>
ASYNC-76: add tests for default exception behavior

Signed-off-by: puredanger <alex.miller@cognitect.com>