Test EncodedSring for more undefined conversion / invalid byte sequence

- Add test for EncodedString#to_s
- Assert EncodedString fails splitting a string with invalid byte sequence
- Add InvalidByteSequenceError test from https://github.com/jruby/jruby/blob/master/test/mri/ruby/test_transcode.rb
- Fix ArgumentError raised from #split
- Clarify encoding failures and provide better replacement strings for undefined conversions
- Handle ConverterNotFoundError for Ruby 1.9.2
- Acknowledge that Encoding.default_external on Windows is not UTF-8, but is IBM437

-            expect(resulting_string.encoding).to eq(Encoding.default_external)
+            expect(resulting_string.encoding).to eq(Encoding.find('UTF-8'))
The Differ no longer catches CompatibilityErrors

This was introduced in
https://github.com/rspec/rspec-expectations/pull/220/files#diff-9533f5f156a38a3307ecfc610d2282d7R47

but is no longer raised either by the the current test code, the
original test code
      @expected="Tu avec carté {count} itém has".encode('UTF-16LE')
      @actual="Tu avec carte {count} item has".encode('UTF-16LE')
or any other variations I've tried

Since I'm moving all the encoding logic into EncodedString, and this
doesn't appear to do anything any more, I am proposing to remove it.

Next commits will also move over #pick_encoding
See if we can get rubinius to build