Optimize key-based Hash access for empty hashes

This avoids performing the potentially expensive hash computation in
the event that the Hash is empty, as there cannot possibly be a match.
Conform to MRI behaviour for empty hashes

In the event that the `#hash` method has side effects, any optimisation
with respect to empty hashes will affect the results of the operations.

For MRI, the empty-hash optimisation seems to be applied everywhere in
2.0.0 and beyond. In 1.9.3 the #hash method is not called for #[] and
#key?, but strangely enough the performance is not improved for empty
hashes. In 1.8.7, the #hash method is always called even if empty.

This does not match the semantics of MRI exactly, as this avoids calling
the #hash method from #values_at in 1.9.3, but that would be slightly
more involved to implement.
Option for keeping file offset info for source positions - disabled by default.
[Truffle] Use file offset info to build richer source sections.
Properly initiate a kill of target thread for finalization.

The logic as written before was passing "this" as the killer
thread, which caused the kill logic to raise a ThreadKill. Since
this path was only used by the JVM finalizer, it effectively went
unnoticed. As a result, Fibers would no longer be properly
terminated when finalized.
Make this spec match what MRI actually does.
find builtin libraries on any classloader
[Truffle] Remove some more unknown source sections.
added comment test case for ffi and osgi [skip ci]
[Truffle] Remove more bad source sections.
[Truffle] Disable delta-blue - seems badly broken under compilation.
[Truffle] Move exception translation into a node and do it at every method boundary so we can create stack traces early.
[Truffle] Major tidy up of exceptions and call stack printing.
* stay within the classpath: protocol

* unsure we pass on the Url with its URLStreamHandler provided by the classloader directly to the JRubyClassloader

remark on the URL:
currently there are plenty of issues where those embedded jars from jruby-stdlib
can not be loaded. AND if somehting goes wrong adding that URL to the JRubyClassloader
there will be no Exception so the actual error pops as some constant not found or
some import_java does not work. turning on debug.loadService often shows that jar could
be found and still it is not working. URL -> toString -> new URL( String ) is not reliable since
you always can construct URL objects with "custom" URLStreamHandler. the idea here to
just take whatever URL the classloader produces and pass it on the JRubyClassloader.
added the same readonly-fileStats to URLResource and ClasspathResource as JarResource has.
added directory listing info the jruby-stdlib.jar so ClasspathResource and URLResource
can use them to setup directory FileResource

with this the OSGiSCriptingConstainer and also the ScriptingContainer inside an OSGi bundle have
not default gems. most probably other J2EEContainer which do not "see" defaults gems with jruby-1.7.13
should see them now.

embedded gems will also work when they embedded directory supply a .jrubydir file with the directory listing.
integration test is not supplied here.

testing is currenly limited to high level integration tests
Merge branch 'jruby-1_7'

Conflicts:
	core/src/main/java/org/jruby/util/URLResource.java
remove strange error regarding picking the wrong ruby version in backports gem
fix bad merge
[Truffle] Call stacks and object space only need slow access to frames.