`JRubyEnvironment#dispatch` now throws `IOException`.

Where coprocessor events allow `IOException`, this is still used.
Where they do not, a new `dispatchNoThrow` is used instead.  This
wraps the checked exceptions in `RuntimeException`.

`JRubyEnvironment#runRubyMethod` now also unwraps thrown
`InvokeFailedException`, when the cause is also an exception.  Note we
must be careful to check for `InvokeFailedException` from the right
classloader.