Coprocessors can register an `#on_error` handler.

This gets invoked (in the relevant `ExecutionContext`) whenever
another handler raises an exception.  It receives the exception, as
well as the event name and original arguments.  Any return values or
raised exceptions become the final ones HBase sees.

Particularly, by wrapping incoming exceptions with a
`java.io.IOException`, a coprocessor can decide to send an error back
to the client rather than force HBase to unload the coprocessor..