Because RubyIO has its own internal buffers, which are often used
at construction time to check a stream's BOM, we need to make sure
these pseudo-streams reflect those buffers by calling through the
same IO logic as Ruby.
I am unsure if we should do the same for getChannel, since there
are a number of consumers (socket subsystem, SSL subsystem) that
depend on getting the actual, unbuffered channel from the IO. For
now, added javadoc indicating that the channel returned should not
be used at the same time as the IO it came from.