Removed stdlib stubs.
Fixed handling C++ exception unwinding through NativeMethod call.

The issue here was exposed by the following RubyGems code:

  Zlib::GzipReader.wrap(*args) do |gzio|
    @spec = Gem::Specification.from_yaml gzio.read
  end

GzipReader.wrap is a NativeMethod (Ruby method implemented by a C function)
that yields to a block. Gem::Specification.from_yaml is another NativeMethod.
When it ran, a Ruby exception at the VM level was thrown and the stack was
unwound through the NativeMethod::executor_implementation for
Gem::Specification.from_yaml. This didn't allow the NativeMethod executor to
clean up the stack. The rb_yield implementation received a NULL value from the
Ruby block code, indicating an exception had occurred, causing the rb_yield
implementation to access invalid data while trying to handle the exception (ie
execute a longjmp to the exception handling code above it).

The code duplication here is annoying but the lifetime of the exception
objects is difficult. We should probably handle native method
frame setup and teardown (and the enter/leave C-API code) in a scoped object
the way we handle the profiler and other locks.
Adjusted some gem requirements.
Added method for loading files required by rubygems.