temp locl replace var clone missing
Note to self: dont ride your bike for 30 minutes jump off and commit your code
Stick a fork in rescueMap's eye...add rpc field to instr to eliminate need for map since all instrs need rpc anyways
Clone all instrs in linearized instr list so that when JIT starts it cannot mangle anything in those instrs.  Cannot see any measurable startup impact in this change
Fix a bunch of issues with cloning.

* Caught while trying to use cloned instructions in interpreter.
  So far, cloning was only being used for ensure-blocks and
  in IRBuilder where these bugs were less problematic or at least
  never caused problems so far.
Minimal fixes to IR to get JRuby compiling again.
[Truffle] Time#- should use real rather than integral seconds.
Fixup broken commit c02df12e.
Make LocalVariable fields final
[Truffle] Use visibility flag in #respond_to?.
(Closure)LocalVariable hashCode should include both name & offset.

* Since an identically-named local variable in a nested closure refers
  to the same runtime variable as a local variable in the parent scope,
  in IR, we consider them "same" variables as well (for the purposes of
  cloning, LVA, etc.).

  However, because of shadowing when variables are declared in block
  args, to prevent mixing up different variables across scopes, we have
  to include offset in the hashCode. See code snippet below where
  _, n, s shadow similarly named variables in surrounding scopes.

  FIXME: Do we need a different LocalVariable type for these?

-------------------------------------
  def yielder
    [1,2].each { |i| yield "boo", i }
  end

  def foo
    yielder do |_, n|
      p "1: n=#{n}"
      yielder do |s, _|
        p "2: s=#{s}"
        yielder do |n,s|
          p "3: n=#{n}, s=#{s}"
        end
      end
    end
  end

  foo
-------------------------------------
Clone instructions before interpretation.

* Followup on 7a8bf5fd.

* Prevent JIT/opts passes from clobbering the instructions that
  interpreter is working on. This sets the stage for enabling
  multiple versions of a scope to be active on the execution stack
  at the same time.

* The following fields in IRScope are still referenced at runtime
  Of these, 3 are immutable and are safe. But, there are 2 fields
  that could be clobbered by opt passes / JIT and need to made
  available to the interpreter context.
  - scope name -- immutable
  - scope type -- immutable
  - parameter list -- immutable
  - tmp var count
  - scope ir flags
[Truffle] Add the possibility to make singleton methods.

* rb_define_singleton_method() in MRI, (meta = true) in JRuby.
* Refactor addMethod().
[Truffle] Use our shiny new singleton methods.

* Now all @CoreMethod should be correctly classified.
* Usage of self is rather rare, so use the same strategy as for isModuleFunction.
[Truffle] It is IO.open, not File.open (RDoc misleading).
[Truffle] Kernel#respong_to_missing? is private.
[Truffle] Remove a couple inexistant methods.

* GC.start, not ObjectSpace.start.
* Time.time_s_from_array does not exist on Rubinius.
[Truffle] Add the GC module.
[Truffle] Just use inheritance for static delegation, it is much simpler.
[Truffle] Rename RubyMethod.withNewVisibility to just withVisibility.

* The semantics are better reflected with that name.