Eliminate remnants of old IO backend and localize fileno map.

The old Stream/ChannelStream/ChannelDescriptor code is no more.
Instead, JRuby 9000 uses a fresh port of MRI's IO and transcoding
logic, which then builds off a much thinner fileno shim using NIO
channels. This comment removes the old logic, which is no longer
used.

Utility methods and constants from those classes have been moved
to more appropriate places, and the old internal/external fileno
map -- which used to be static -- is now managed on a per-runtime
basis. For most users running a single JRuby instance with full
native-call capabilities, this map will not come into play much,
but it is still used to find existing ChannelFD wrappers around a
given channel, and must be managed independently from runtime to
runtime.
Use appropriate isolated scope for ScriptingContainer here.

The default constructor uses SINGLETON scope, which shares a Ruby
instance with the VM running the spec. When the container goes
out of scope and eventually GCs, it also tears itself down. This
in turn causes stdio streams to be marked as closed (though not
actually closed), so the parent runtime can no longer use them.

This is not really a bug, since container teardown should trigger
runtime teardown, and runtime teardown should flush and terminate
all IO streams. However, the old IO logic acted more aggressively
to preserve stdio streams, exposing this flaw in the test.

It may be we need to restore that preservation logic before
release, but for the moment I'm just modifying the test to use the
right scope.