Fix installation of prerelease gems

When available_specs was introduced it didn't sort the :complete type
(which contains sources from two datasets).

Binary search was added to speed up extracting only the needed tuples
from the result of available_specs (see #595).  Binary search depends on
a sorted list.

The assumption that available_specs returns a sorted list was masked by
the tests which sorted the expected value.  The other available_specs
results are all sorted by default, so this was an easy one to miss on
review.

Fixes #636
Do not sort result of available_specs

Sorting the result may mask errors as found in @d295837 and #636.
Fix warning in GemcutterUtilities tests

Parentheses were missing the test added in #622
Allow concurrent require, move top-level resolution out of Kernel.

In order to protect RubyGems internals from being damaged by
concurrent requires, fcde0cd3 introduced a monitor to prevent
concurrency. However, the protected zone also included the
eventual require of the target file, using the standard require
from Kernel. This effectively forced all requires to be done in
serial when RubyGems is active.

This path moves the actual require of the target file out of the
protected zone, allowing concurrent requires without concurrent
access to RubyGems internals. It also moves this top-level
resolution logic out of kernel_require and into the Gem module.