Numerous fixes for StringIO in 1.9 mode.

Much of the logic here for 1.9 mode is now a nearly-direct port of
the MRI logic. This should bring us closer to supporting encoding
properly for the key StringIO operations like read and gets.
Merge remote-tracking branch 'origin/master'
More faithful port of strio_read.
Rename "data" to "ptr" to more closely match MRI source.
Additional minor tweaks to get StringIO closer to 100%.
Remaining fixes to pass all of MRI's test_stringio.rb.
Twiddling some specs that fail now (as they do in MRI).
Additional tweaks and fixes for StringIO

* Fix bug related to porting (http://bugs.ruby-lang.org/issues/8728)
* Actually throw arg length error, even though invoker logic
  will do it (consistency with MRI port)
* Cleanups
Add StringIO#codepoints and untag passing specs.
In Ruby 2.0, String#lines returns an Array, rather than an Enumerator
Merge pull request #945 from Sinjo/fix_string_lines_2_0

In Ruby 2.0, String#lines returns an Array, rather than an Enumerator
Missing arities for StringIO#set_encoding.
Final fixes to untag all StringIO specs.
Finally get all specs and tests for StringIO passing together.
Port over a bunch more transcoding stuff + gzip encoding logic.
JRUBY-7189: invalid byte sequence in US-ASCII (aka define_method can register multi-byte non-US-ASCII names now plus reflective methods will return proper encoded symbols)
Optimize String to float creation by limiting how many characters will be looked at
Ripper: huzzah new_assoc is an array not a hash?
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.
ripper: Need dispatch for whitespace after newline