Handle NCDFE for odd envs like GAE that throw it for Unsafe.

Fixes #2304.
Open3.capture* only exist on 1.9+.
Reduce travis build times by only running on one JDK version.
[Truffle] Last of the def-2.0 specs.
[Truffle] Fix regexp errors.
[Truffle] Last of the regexp interpolation specs.
[Truffle] Some more regexp encoding specs working.
Restructured encoding definition process a bit to allow easier external use.
Tidied up the encoding visitor interfaces a bit.
[Truffle] Ensure the __ENCODING__ constant is set correctly.
[Truffle] Tag some newly failing language specs.

These started failing when we started setting __ENCODING__ correctly.  They were passing before due to happenstance.  After investigation, it looks like these only fail when passed through eval and likely due to source position tracking issues.
[Truffle] Tagged a new regexp encoding failure now that we're setting __ENCODING__ properly.
[Truffle] New encoding implementation.

These changes mirror what JRuby is doing for the most part.  We have to track our own lists for now because EncodingService's lookup tables are specific to the non-Truffle JRuby class hierarchy.  These changes fix the ambiguous lookup problem the old implementation suffered from by using the encoding name, rather than the shared JCodings encoding object, as the lookup key.  All known encodings are now eagerly instantiated at startup.  This is in contrast to what non-Truffle JRuby does, whereby it defines its RubyEncoding instance but lazily loads the JCodings encoding object as needed.  Eagerly loading simplified some things, avoided some thread safety issues, and may be useful for other static analysis within Truffle.
[Truffle] Implemented Encoding#name.
[Truffle] Implemented Encoding#dummy?.
[Truffle] Updated Encoding#inspect to take dummy state into account.
[Truffle] Untagged a now passing spec.
[Truffle] Untagged more passing specs.
[Truffle] Lots of work on STDIN, STDOUT, STDERR.
[Truffle] Some more predefined specs passing.