Add RubyEncoding.encodeUTF16 using Unsafe tricks.

Converting a Java String to UTF-16 Ruby String appears to be 2x
faster using this method than converting to UTF-8 using Charset
encoders. However, we can't simply make all Java Strings entering
Ruby suddenly be UTF-16.
Add RubyString.newUTF16String and newUTF8String.

These new methods explicitly produce UTF-16 and UTF-8 Ruby strings
from incoming Java strings. The old newUnicodeString method will
now choose UTF-8 or UTF-16 based on whether the default internal
encoding rather than always doing UTF-8.

This allows a user to specify that the Ruby default internal
encoding should be UTF-16, and we will start encoding all Java
strings accordingly. This may not be a common way to run, but for
situations requiring the fastest-possible Java string handling, it
is an interesting option.

This also seems like "the right thing to do" if a user sets UTF-16
as default internal encoding, so it has a logical justification
outside of performance too.
Fix Java String coercion logic to use fast path.

Java Strings that enter Ruby through JI pass through JavaUtil's
converters. Unfortunately the converter for Java String was using
the slow-path Charset#encode logic rather than our thread-local
UTF-8 encoder logic. The former creates a number of buffers and
other objects, while the latter will ultimately only create the
final byte[] if the incoming String is of a reasonable size.

This commit also fixes the generic encodeBytelist used by
RubyString.newString(..., java.lang.String) and friends to be
smart about how it encodes the string, using the fast path UTF-8
and UTF-16 logic as appropriate.