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.
Two steps forward, one step back. Re-fix unit test failures.
Merge remote-tracking branch 'origin'