commit just to save working reading in scope headers
Account for self operand in getSimplifiedOperand
BuildLambda was not really simplifying its operands
More decoding.  Committing lots o stuff including debugging output
Loading persisted IR but crashing on execution
Much hackage on decoding debugging
Gets a bit further on decoding
Introduce {One,Two}OperandBranchInstr to fix ordering in getOperands and to remove if/null checks
Regression spec for #1375.
Regression spec for #1375.
Improve pre-frozen string logic with a deduplication cache.

This commit brings our "str".freeze compiler optimization in line
with MRI by using a global deduplication cache to provide for even
more sharing across literals. The cache is both weak-keyed and
weak-valued and just maps from an arbitrary RubyString to the
pre-frozen cached version of that RubyString.

Note that the logic for deduplication is synchronized against the
JRuby runtime. This will impact concurrent loads that repeatedly
ping the cache, but uses in this commit all cache the value
locally and only hit the dedup cache once. This potential
concurrency bottleneck may need to be addressed in the future.
Implement deduplication of literal hash string keys.

Because we know that string keys are immediately duplicated and
frozen we can use our freeze-dup cache of strings in the compiler
whenever we see a literal hash with literal string keys. This
avoids the overhead of duplicating and freezing literal strings
repeatedly, for a roughly 4x performance speedup on a 5-element
literal hash with literal string keys. In addition, this commit
modifies the normal freeze-dup process in Hash to use the dedup
cache added in 926ca89.

This commit may introduce contention since the process of freeze-
duping string keys now must pass through the synchronized dedup
logic from 926ca89. We may need to reexamine that logic, or not
use it in the hash key string insertion freeze-duping.
Use a cache of Thread#status values, to reduce alloc overhead.
Do not eagerly dedup strings when doing identity comparison.
Only set source encoding when specified from -K to match MRI.

It doesn't appear that MRI's source-encoding logic is the same in
1.9 and 2.0, so my fix for -Ku based on 2.0/2.1 codebase caused
test failures. But 2.0 and 2.1 fail the tests the same way. So
to compromise and allow the -K fix to work when specified, I have
modified this code to honor the -K encoding when specified, but
otherwise use the old default source encodings. This may not be
quite right, but it makes us match 1.9 again.
Support file input for PKey::RSA.new.
Update cacert for imap tests to newer edition.
Merge remote-tracking branch 'origin/jruby-1_7'

Conflicts:
	core/src/main/java/org/jruby/Ruby.java
	test/externals/ruby1.9/openssl/fixture/cacert.pem
	test/externals/ruby2.0/net/imap/cacert.pem
Fix bad merge.
Implement more Addrinfo-related logic throughout socket ext.

* Addrinfo.getaddrinfo
* Socket and ServerSocket binds that take Addrinfo
* Correct logic for SO and SOL constants in BasicSocket
* ServerSocket for listens in socket.rb