Port over a bunch more transcoding stuff + gzip encoding logic.
Patch up things that broke from my mega-port.

* GzipReader#read always returns ASCII-8BIT strings when given a
  length.
* String#encode needed some ported logic to fit other pieces.
* Get ECONV constants propagated into RubyConverter.
* Encoding 7-bit strings from/to ASCII-compat encs is a no-op.
Large port of MRI IO transcoding logic, to fill in our gaps.
Fixes and a few additional ports to get test:mri19 green.

Additional fixes to get test:mri18 green.
Edging closer to everything passing again.
Fixes to get all 1.9 specs passing again.
IR Experimental: call-site profiling that feeds into inlining

* Added experimental call-site profiling in the IR interpreter
  and used it to drive inlining decisions.

  On bench_richards about ~7% speedup (~9% fewer instrs)
  On red_black_tree, about ~10% slowdown (~10% more instrs)

  To be investigated and experimented with more.
  Committing so others can partake of the fun as well.
Two steps forward, one step back. Re-fix unit test failures.
Merge remote-tracking branch 'origin'
Remove now-passing excludes from MRI suite.
check first if canonicalization is wanted before looking if denominator is 1 in Rational
Guard RubyString.makeShared with 1_9 checks, so encoding is set.

We have a number of places in 1.9 logic where it eventually falls
back into 1.8 logic due to lack of version-splitting. In the case
of JRUBY-7195, the element grab from a MatchData shared the logic
in RubyRegexp.nth_match between 1.8 and 1.9 modes. However, the
logic there does not properly create new strings, leaving their
encoding set to default.

This commit modifies all paths to RubyString.makeShared I could
find with logic to use the "19" version if in 1.9 mode.

Fixes JRUBY-7195.
Re-exclude these intermittent failures while I investigate them.
Merge remote-tracking branch 'origin/master'
Fix bug where dregexp would break its own options.

A DRegexp node would construct its Regexp by passing the
RegexpOptions along directly. However, some construction paths
proceed to modify those options, setting "fixed" if the incoming
string is ASCII-8BIT. Because the options were never copied, this
broke the original DRegexp node causing all future regexp to also
be marked "fixed".

I modified the construction paths the interprter uses to always
clone the incoming RegexpOptions.

We should make RegexpOptions immutable in the future, to avoid
this sort of issue.
use expect instead of should for better rspec
add a failing test for overflow in Time#+
avoid NSec going above 10^6 in RubyTime
that should actually be ">=", RubyTime NSec range is [0, 999 999]
Merge pull request #966 from rajcybage/rspec_fix

use expect instead of should in rspec