Add a compliance.strict option for maximum compliance with RubySpec.
Follow RubySpec for processing of switches in RUBYOPTS if strict compliance.
Move the compliance option into a new category.
[Truffle] Use -Xcompliance.strict to get RUBYOPT specs passing.
Enable --yydebug if -Xcompliance.strict.
New {Closure,}InterpreterContext with all state interpreter needs to execute.
This should eliminate nearly all contention between JIT and intepreter.  There is still
one remaining bug involving label operands cloning when we don't want them to so
instr cloning (last bit) is disabled atm.
[Truffle] Profile argument values.
Finally make prepareInstruction clone instrs + labels and not share any state with IRScope.

Problematic that we re-store info back into CFG at this point so debug output matches that
interpreter.  That is ok though since JIT should still be fine with these changes.  It is
not fine if we have debug on and interp is printing out CFG while the JIT is changing the
CFG.  A problem for another day.

Disabled OptimizeDynamicScope for now.  Something with cloning instrs + some closures
makes it break.  It appears not not find lvars in its flattened state.
Fix OptimizeDynScopesPass issue from last commit.  We were using a null check to initialize
which is no longer possible with new InterpreterContext.
Remove no longer correctly named preMethodFrameAndClass since we no longer have class
Remove some params for long dead rubyClass field on TC
Make sure every scope gets its own copy of GLOBAL_ENSURE_BLOCK_LABEL

* These labels were being shared across all blocks which caused buggy
  rescue maps being set up across scopes and led to infinite loops
  in block_spec.rb and raise_spec.rb when specs were run with all
  passes enabled after recent InterpreterContext changes.

* This patch fixes that up.
Prepare instrs. for interp once per scope

* If interp context is available, don't rerun prepareInterpreterContext
  repeatedly on scopes. But, in order to make sure we get the right
  flags for pushing/popping scopes, move the cached info for them
  into InterpreterContext. But, now that I write this, perhaps the
  biggest perf. regression was from running prepareInterpreterContext
  repeatedly rather than fetching the flags repeatedly.
Further streamlining of interpreter context

* Deleted old code in IRScope that is no longer relevant.

* For closures, short-circuited prepareForInterpretation from
  base class to ensure that callers use the 1-arg version where
  it needs to be built.

* Subsequent crashers exposed an unresolved FIXME in BuildLambdaInstr
  that had a WrappedIRClosure that needed cloning and build of an
  interpreter context as well.
[build] do use released jruby for building when on SNAPSHOT version
[build] removing obsolete files
[Truffle] Hide better ModuleChain and provide ancestor iterators.

* So we have less comparisons with IncludedModule,
  clearer expectations on the capabilities of the receiver
  and avoid having to call getActualModule ourselves.
[Truffle] assignableTo should only be defined for classes.
[Truffle] Simplify Module#<=>, no need for another slower specialization.
[Truffle] Remove last misusages of ModuleChain.