Merge branch 'case-when-implementation'
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'upstream/master'
Fix typo in lexer. lex_state of FNAME should become ENDFN after seeing an identifier
Correct FNAME/ENDFN issue fname never transitions to endfn
[JRuby-1068] - Implementing Socket.getifaddrs
Partial fix for #1463.

In order to make a Thread and the fiber it is resuming look like
a single unit, we must make sure that asynchronous exceptions
happening at that boundary propagate the right direction.

Exceptions raised in a thread waiting on Fiber#resume should go
into the fiber and be handled there. Exceptions raised on a fiber
waiting on Fiber.yield should go to the resuming thread and be
handled there. This is done by capturing exceptions in
Fiber#resume, transfer, and yield and propagating them to the
waiting thread/fiber if its queue is still active. If that queue
is not active (the fiber has exited), the exception is propagated
upward in the current fiber/thread.

The unknown case is what should happen to a fiber in which an
exception (for example, a timeout) has triggered.

In MRI, where there's really only one thread, the timeout would go
to the resuming thread and happen arbitrarily in its running code.
The originating fiber would be left undamaged as if nothing had
happened, and would be subject to GC if abandoned or resumable as
normal. In this patch, the original fiber performs the same
exception-propagation loop and goes back to its queue for a
resumed value; this should roughly match MRI's behavior. However,
I am not sure I agree with MRI's behavior, or if MRI's behavior is
correct, then Timeout should *never* be used around Fiber.yield,
since it is impossible to know where and when it will fire.
Handle uncancellable timeout future more reliably.
Revert "Added new option jruby.timeout.thread.pool.max to control the max number of Timeout worker threads."

This reverts commit 8bbe14b9a3483ff9a789f56cc3a4beeb7446a18e.

The first parameter to newScheduledThreadPool is not a max, it is
a minimum. That makes the original commit moot, since it does not
limit thread count and actually causes more threads to be alive
than are necessary.
Add specs for both cases from #1463.
[IR] Change CFG to produce proper direction iterators so we can just call next where they are used.  Change DataFlowProblem to use them.  Mild formatting changes
Merge remote-tracking branch 'origin/jruby-1_7'

Conflicts:
	core/src/main/java/org/jruby/lexer/yacc/RubyYaccLexer.java
	core/src/main/java/org/jruby/util/cli/Options.java
BY THE POWER OF GRAYSKULL!!!!!  DataFlow now uses Java Generics
[IR] getscope then cfg
[Truffle] - A Symbol literal is the same object when created from identical strings
[Truffle] - Fixing indentation in RubySymbol class.
[IR] Fixed buggy condition in unboxing analysis.
Fix NoResultCallInstr in JIT.
Bind super statically in top script like in method bodies.