Use highest compat when binding methods using it in JRubyMethod.

This is necessary to maintain some backward compat with libraries
that needed to separate compat-specific behavior for a given
method. We no longer use compat in JRuby proper, but in order to
let those libraries work this commit modifies method binding to
choose the highest compat of all defined methods when compat is
being used. This should be correct for all cases, since no version
of JRuby was released with official support for anything higher
than 1.9, meaning the highest annotation we should see in the
wild would be 1.9 compat.

Fixes #1194.
do not softlink bin/jruby to bin/jruby.bash use copy instead. the link just
created to many problems with OSes and then installing jruby-launcher gem

https://github.com/jruby/jruby-launcher/issues/7

[skip ci]
Undo fast_finish
Provide more information on script resolution

Print where we searched for scripts, even when the search yielded
no match.
Re-enable fast_finish
[IR] Minor code cleanup in inlining context class + elsewhere

* Replaced multiple boolean vars with a private cloning mode
  enum in InlinerInfo.
Implement Numeric#step.size

Gets Numeric#step.size doing its thing by putting the following pieces
in place:
* implement Numeric#intervalStepSize closely following the MRI
implementation (https://github.com/ruby/ruby/blob/09b02349c212cac6395e9a634e3d4610e9bbc48c/numeric.c#L1799)
* implement Numeric#floatStepSize which Numeric#intervalStepSize relies
on, again porting from MRI (https://github.com/ruby/ruby/blob/09b02349c212cac6395e9a634e3d4610e9bbc48c/numeric.c#L1748))
* refactor Numeric#floatStep19 to also use the new floatStepSize, which
not only avoids duplication, but also fixes some tests
* create Numeric#stepSize, and use it to enumeratorizeWithSize our steps

We'll be able to un-exclude test_size_for_step from test_enumerator.rb
once Range#size is implemented (https://github.com/jruby/jruby/issues/1252).
Enumerator#size support for strings
[IR] Cleanup of inlining-related instruction cloning code.

* Got rid of the various cloneFor* methods and replaced with a
  single cloneForInlining method.

* Exposed the CloneMode enum publicly and used the cloning mode
  to do specialized cloning for some instructions based on mode.
  - This improves code readability and maintainability quite a bit.
[IR] Ooops! Committing file that I left out in previous commit.
Enumerator#size support for loops
`gsub!` can return nil, perform `upcase!` on different line.
[IR] Various fixes to inlining code.

* Added ipc to Instr so that inliner can use ipc to identify
  the call site where code should be inlined rather than rely on
  reference identity of the call instruction.

* Added ability to clone host scope instructions before inlining
  in case the host scope is on call stack (this prevents destructive
  updates between the two invocations of the scope).

* Rescue map for a scope is created during interpretation and used
  directly rather than traversing CFG which would be buggy in the
  presence of inlining.

* Other related cleanup and fixes stemming from the above changes.
Merge pull request #1281 from dmarcotte/numeric-step-size

Implement Numeric#step.size
Merge pull request #1284 from dmarcotte/string-enum-size

Enumerator#size support for strings
Merge pull request #1287 from dmarcotte/enum-size-for-loops

Enumerator#size support for loops
Merge pull request #1288 from vipulnsward/fix-helper-gsub

`gsub!` can return nil, perform `upcase!` on different line.
Minor: Removed dead arg to call in Helpers
[IR] Some more fixes and FIXMEs to inlining code

* More progress inlining code on bench_method_dispatch.rb

* The next set of crashers in inlining requires fixes to the
  WrappedIRClosure operand to take an explicit self arg so that
  on inlining, the correct (original) self can be passed into
  the block rather than passing the self from the host scope
  into which code got inlined. TO BE DONE.
[IR] Extend WrappedIRClosure to include an explicit self operand

* This fix is required for proper inlining of scopes that contain
  blocks so that the self prior-to-inlining can be passed into
  the block after-inlining into another scope.

* With this fix, bench_method_dispatch.rb runs with -Xir.profile=true
  without crashing. Same for bench_fib_recursive, bench_red_black,
  shootout/meteor, shootout/mandelbrot, bench_richards,
  bench_neural_net, and bench_tictactoe.

* There are still known bugs in the inlining code (search for
  FIXMEs or 'This is buggy' comments in the relevant code), but the
  correctness has moved along far enough to enable profiling and
  inlining on a large enough set of programs without crashing or
  yielding incorrect results.