Support processing of gems that have already been loaded into an IO object.

In particular, this feature is used by rubygems.org to extract metadata
from uploaded gems that have not yet been written to storage.
Deprecate Gem::ConfigMap in favor of RbConfig

I'm not sure what it was ever for.  It just copies RbConfig::CONFIG
entries, so let's just use the original source now.
Use RbConfig ruby_version for Gem.ruby_api_version

By default this has the same value as MAJOR.MINOR.TEENY, but can be
overriden from ruby's ./configure --with-ruby-version= which makes
RubyGems more flexible for packagers.

Fixes #770
Add #770 to History
Reduce HTTP requests by using BestSet

RubyGems 2.2.0 introduced use of the bundler API, but accidentally this
was not complete.  `gem install` of a gem was left using the marshal API
like 2.1.x and earlier which makes lots of requests.

Now RubyGems uses BestSet inside InstallerSet for remote requests.  This
should speed up install during the dependency fetching phase.

This should also address #762
Use the last redirected URL to create the Gem::Resolver::APISet

In the case that `bundler_api_url` redirects to another URL, this
prevents unnecessary 302s every time the API Resolver requests
dependencies for a gem.

This shaves about 3.5 seconds off the time it takes for me to run
`gem install sinatra`. Even more time is saved when installing gems
with more dependencies.
delegate prefetch to @remote_set in Gem::Resolver::InstallerSet

APISet has a #prefetch method that can request multiple specs at once,
but it was never called, meaning each dependency required a separate
request to the Bundler API.
Add BasicSpecification#source_paths

This allows documentation and analysis tools to retrieve paths of source
files in gems.  This is needed as the introduction of shared gem
directories means the extension source directory is no longer included
in require_paths (which was meant for $LOAD_PATH, not source code).
Use source_paths for fallback rdoc plugin

Fixes #758
Add #758 to History
Allow Gem.read_binary for read-only files

An lock cannot be obtained for a read-only file, so retry without
read-write or a lock on EACCES.  This allows read-only file://
repositories to work again.

Bug #761
Remove extra bullet in History
Add #766 to History
Update version and release date
Add #763 to History
gem update of multiple gems should identify those already up to date
Import r44526 from ruby trunk

BASERUBY is not set usually.  fix errors in mkmf tests.

Duplicate of ruby/ruby@fe46b2d
Only perform a single request in cache_update_path

This fixes a double request in the case that the locally cached specs
are out of date. What RubyGems did before this commit was perform a
request to determine that the cache was out of date, then perform
another request to download the latest specs.

Now we only perform one request which returns 304 Not Modified and no
data if the local cache is up to date, or 200 OK and the new specs data
otherwise.

This shaves off about a second of install time on my connection.
Ignore extra arguments in test RemoteFetcher

This fixes test failures from @b77dd37 in test_remote_fetcher.

See #772
Add #772 to History