Perf improve Enum#next by using SyncQueue instead of Exchanger.

Conflicts:
	src/org/jruby/RubyEnumerator.java

I am restoring this change for perf and because we have some time
to let it bake and ensure it does not regress the fixes for
Enumerator#next that were incorporated in 1.7.4.

The Exchanger-based impl appears to have significantly more
context-switch overhead than the SynchronousQueue version, perhaps
due to the bi-directional nature of Exchanger (more coordination
required for the hand-off).

All tests appear to pass and the original bug report's example
cleans up the abandoned "nexter" correctly.

Benchmark:

loop do
  puts Benchmark.measure {
    enum = (1..10_000_000).each
    begin
      enum.next while true
    rescue
    end
  }
end

Before (Exchanger impl):

  9.210000   5.840000  15.050000 (  9.525000)
  8.770000   6.300000  15.070000 (  9.806000)
  8.270000   5.770000  14.040000 (  9.074000)

After (SyncQueue impl):

  7.260000   0.050000   7.310000 (  3.560000)
  6.290000   0.060000   6.350000 (  3.162000)
  6.130000   0.050000   6.180000 (  3.085000)

Versus lightweight-threaded implementations:

Ruby 2.0:

  9.490000   0.010000   9.500000 (  9.492637)
  9.530000   0.000000   9.530000 (  9.537268)
  9.410000   0.020000   9.430000 (  9.429057)

Ruby 1.9.3:

  9.150000   0.010000   9.160000 (  9.160083)
  9.190000   0.010000   9.200000 (  9.187712)
  9.150000   0.000000   9.150000 (  9.153203)

Rubinius:

  6.442284   0.024857   6.467141 (  6.378807)
  6.350513   0.023981   6.374494 (  6.529533)
  5.870183   0.023033   5.893216 (  5.883422)