Arity-split rest form should set required = min args.
Propagate ThreadContext.
May need these additional sets of $! but unsure.

Some tests in spec:ji's rescue_spec (specifically, the threaded
pass-through spec at the bottom) appeared to be picking up $! from
a previous spec run within the rescue block. IR is using $! to
pass the exception from handling back out to assignment, but only
the Java exception path was setting it during handling. The Ruby
handler logic did not set $! and leaned on raise logic to have set
$! ahead of time.

The spec in question failed because when the exception is first
raised, it is on a different thread. It is later re-thrown up a
different thread. In order to handle this right now, I'm adding
additional $! setting to the Ruby handler and making the Java
handler do it with fewer conditionals.

@subbu: Hopefully we can look at this together. I'm not sure if
this is the right fix.