If no context class loader, use this class's loader.
Alter singleton scripting container logic to not teardown on GC.

In JRuby 9k, tearing down a runtime will (correctly) flush and
close all still-open IO streams. This includes stdio, with the
effect that all stdio streams on a runtime are closed and unusable
after a teardown.

The SINGLETON scope for ScriptingContainer uses a single, static
global runtime for all container instances. Previous logic was for
a ScriptingContainer to tear down the associated runtime at GC,
which resulted in subsequent SINGLETON containers seeing a runtime
with stdio closed. This led to EBADF errors appearing in some
embedding code.

This change modifies our logic in the following ways:

* A singleton container will not tear down the runtime on GC
* If the global runtime is torn down, we will clear the global
  runtime so a new runtime will be created for future calls.