[IR] Split ReceiveExceptionInstr into Ruby and JRuby-impl exceptions

* ReceiveRubyException is used in native Ruby rescue handlers.
  It rethrows unrescuable exceptions. As for other exceptions,
  it unwraps the exception object to reveal the native Ruby
  exception object and passes it through to the rescue handler.

* ReceiveJRubyException is used in JRuby-implementation-inserted
  rescue handlers. These are break handlers, non-local-return
  handlers, ensure handlers, scope-global ensure handlers inserted
  during optimizations. These handlers do not unwrap the exception
  object and only examine them for JRuby-implementation exception
  types where necessary (breaks, non-local returns).

* While this could still have been handled with a single exception
  instruction, the split in semantics makes this cleaner/clearer and
  could possibly enable other specialized handling in the future.