[IR] Redid IR for ensure bodies

* JSR-style ensure bodies are removed since this is harder to
  compile into java bytecode using ASM.

* All ensure bodies are now cloned at all sites that they need
  to run (protected body, next, return, break).

  The cloned ensure bodies have different rescue-protection than
  the surrounding code and this required maintaining additional
  information during IR building to make sure that exceptions
  raised in ensure code is protected by the same code as at the
  ensure-code definition site (rather than ensure-code clone site).

* Ensure body cloning made use of previously implemented instruction
  cloning code by adding a new clone mode for slightly different
  semantics than other clone modes.

  TODO: The inliner-info class could use some refactoring and
  cleanup since it now supports 4 different clone modes.

* Eliminated SetReturnAddressInstr and JumpIndirectInstr classes.

* OptimizeTempVarsPass and CFG building is slightly simplified.

* All originally passing ruby specs now pass.