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.
find builtin libraries on any classloader
added comment test case for ffi and osgi [skip ci]
* 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.
only add .jrubydir on jruby.home [skip ci]
[Truffle] Add a Truffle fatal exception that we never try to handle for complicated cases like exceptions when creating a call stack.
skip osgi ITs(=integration-tests) - some IO related issue - investigate other time
[Truffle] Make backtraces a little bit more robust.
[Truffle] Give backtraces a hash syntax for locals, and add options for how it's printed.
[Truffle] Add self to backtrace.
Merge pull request #1676 from grddev/empty-hash-optimization

Empty hash optimization
Merge with jruby-1_7
[trivial] Make single-line ifs and make getEntry read as !18