Accept Encoding object for Encoding.compatible?

With this change, the following calls are supported:

    Encoding.compatible?(Encoding.find("UTF-8"),
                         "String".force_encoding("UTF-8"))
    # => #<Encoding:UTF-8>

    Encoding.compatible?("String".force_encoding("UTF-8"),
                         Encoding.find("US-ASCII"))
    # => #<Encoding:UTF-8>

    Encoding.compatible?(Encoding.find("UTF-8"),
                         Encoding.find("US-ASCII"))
    # => #<Encoding:UTF-8>
[IR] Addl. streamlining of exc. handling in interpreter loop.

* Make the three catch clauses (RaiseException, BreakJump, Throwable)
  in the interpreter loop similar in pattern making it possible to
  unify them further by moving dissimilar code into the instruction
  stream.  This will bring the interpreter and JIT code much more
  in line with each other by eliminating all special handling from
  the interpreter loop.
* No change in mspec runs.
* Additional minor performance improvement across all benchmarks.
[IR] Consolidated all interp. exc. handling into one catch block.

* Last bit of cleanup for now.
* Next step would be remove the last of the special case from the
  interpreter and moving it to the instruction stream.
* Keep instance as long as the MetaClass is referenced.
* Better failure message
Fix JRUBY-7046 - always copy files in 128M chunks.  Might be slightly slower than the optimized version that tried to transfer the entire file with the fallback, but that one relied on parsing exception messages, and I think the fallback was broken anyway (always copied from the same file position).
Discard $JRUBY_OPTS if we are starting the nailgun server.

This addresses JRUBY-6953.
Add const_get to java package Fixes #435
Call to_path on objects passed to IO.copy_stream
Do not close the io's given to copy_stream
Raise IOError if file not readable or writable
Increment from io position by transfer size
Add length and offset args to IO.copy_stream
[IR] Breaks and non-local returns handled entirely via IR instrs.

* Removed last bits of special case handling of breaks and
  non-local returns from the interpreter by adding global exception
  handling in methods (those that receive nonlocal returns) and
  all closures (for stopping uncaught breaks in lambdas).  Since
  there is no syntactic/lexical way of distinguishing lambda closures
  from proc and other closures, we need this check in all closures.
* This patch does affect performance of intepreted code in some
  cases.  For example, most of the perf. benefits gained from
  recent patches are lost with this change.
* Worth investigating more closely and maybe selectively enabling
  this only for JIT-ted code, if necessary, for example.
We survived the Mayan Apocalypse!
Eclipse: filter out gems from scanned resources

lib/ruby/gems/* gets bigger and bigger and make Eclipse file scanning
slower.
[IR] Improve upon c73cc11 - add uncaught break handling on demand.

* Commit c73cc11 added global rescue to catch uncaught breaks
  in lambda closures and throw a local-jump-error.  But, this is
  a little excessive and impacts performance some for the
  interpreter.  Updated code to add the global rescue only when
  the interpreter encounters a lambda.  This leaves correctness
  intact and eliminates the try-catch on the vast majority of
  closures in ruby code.

* This opt. is not yet available to the JIT code as of this patch.
  To be explored later.

* Recovers lost performance from commit c73cc11.
Fake cext rb_sourcefile(), rb_sourceline(), ruby_sourcefile.  Fixes #467.
File.truncate should not move write pointer
Merge pull request #473 from atambo/file_truncate

File.truncate should not move write pointer