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.
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
support encoded usernames and passowrds in url

- support a username or password in request url with encoded chars
Copy mkmf.log to extension install directory

This allows users to diagnose their extension building problems by
placing the mkmf.log next to the gem_make.out log.  Also, the mkmf.log
would be deleted by `make clean` following generation of the makefile.
adding tests for encoded username and password
Track --local from gem install for --gemfile

This will allow `gem install --gemfile --local` to work once filtering
of the remote sets is added.

Part of #776