Fixes and updates to signal handling

* Signal.trap now always returns the previous handler for the trapped
  signal, or the string DEFAULT or SYSTEM_DEFAULT as appropriate. This
  is the same behavior as MRI.
* Signal 0 (SYSEXIT) in MRI is now implemented. If a SYSEXIT trap is
  set, it will be executed as the JRuby runtime is torn down.
* Added taint checking for trap handlers, for MRI parity
* Added reserved signal checking for MRI parity
* Fixed a bug that previously prevented IGNORE from being sent as a trap
* Un-excluded a number of Signal tests
Fixes for #test_bad_initialize_copy - ensure that frozen objects are not copyable. Fix a type check bug in RubyMatchData#initialize_copy
Numeric types, booleans, and nil should be frozen
True#object_id is now 20, Nil#object_id is now 8
Add warnings for undefining or removing object_id or __send__
MRI now expects at least 1 name character following an @
Don't permit method_missing to be undef'd
remove_instance_variable is now public [Feature #6539]
Method#== should consider multiple copies of a method_missing handler for a given
method to be equivalent.
Check the arity of user-defined respond_to? methods and pass parameters accordingly
Float and BigNum should not return singletons classes, per MRI
Move frozen checks to getSingletonClass() - this allows for MRI-compliant behavior
where only non-singleton frozen objects (ie, things that aren't nil or literals)
perform frozen checking.
BasicObject#inspect no longer calls #to_s, per feature 6130.
Update tests to include new unexclusions
Don't apply color/tty options to normal test/unit runs.
Fix 2132: Split LJE check from NonLocalReturnInstr into separate instr

* Non local returns can throw LJEs in the scope they originate.
  However they could be rescued by existing rescue-handlers.

* In the previous design where the LJE-checking happened inside
  the runtime, it was too late for it to be rescued and not
  propagate outwards. For example, ensure blocks from the scope
  would run before the non-local return executed. However, if the
  LJE had been rescued, control wouldn't have reached the outer
  begin-end construct to execute the ensure block (see the
  regression spec to make sense of this).

* This patch splits out the LJE check into its own runtime helper
  instruction so that the non-local return itself is a return
  without any exception that could be raised.

* Added a regression spec.
[Truffle] We should always use the logical class newInstance for #dup and #clone.
[Truffle] Implement initialize_copy for String.
[Truffle] Implement Array#initialize_copy.
[Truffle] Implement Hash#initialize_copy.