Bug fix Gem::Version.create

Do not assume an object is of type Gem::Version just because it responds to
:version
Fix test for Gem::Version.create change

Test changes due to intentional code behavior change.

The comment "FIX: For "legacy reasons," any object that responds to +version+ is
returned unchanged. I'm not certain why." is no longer applicable as I removed
that functionality in my previous patch. I was not certain why either :)

Instead objects of type Gem::Version are simply not cast by Gem::Version.create.
Compare self, not self.class to input

Fix bug in my patch cought by the test. Per drbrain.
Since this is a class method self.class is Class, which is unhelpful.
Do not attempt extension build for legacy repos

For legacy repositories, RubyGems would try to build extensions that
were already built.  This would result in confusing failures to load
gems with confusing messages.

Now RubyGems does not attempt to build extensions when the "extensions"
directory does not exist for the local repository and the repository
root is not writable.

See #596
Expand destination_dir for install location

When File.realpath is missing (ruby 1.8) RubyGems will report that a file
is being installed outside the install location when $GEM_HOME contains
"..".

Expanding the destination directory while determining the install
location avoids this false-positive.

Fixes #679
Reclassify #670 and #656 as bugs
Update History with 2.1.7 release
Link to the spec reference upon failed validation

Specification validation failure messages are often terse and difficult
to understand.  By linking to the specification reference for warnings
and errors users should be able to resolve them more easily.

See #656
Replace confusing quotes in exception with inspect
Install files starting with '.' (Fixes #680)

The '*' pattern doesn't match files starting with '.' unless you
use File::FNM_DOTMATCH.  Some gems depend on files starting with
'.' being installed.  Excluding files starting with '.' was not
the intention of the author that added the fnmatch code.
Add pretty_print for InstallerSet

Add always_install to #inspect as it was missing
Separate lines for readability
Add missing "then"
Use string platform for resolver specifications

When looking up specifications the resolver sets expect string
platforms.

For a local gem the parsed platform was available and used for looking
up the specification.  The specification was stored with a string
platform which meant the gem was not available (causing an exception).

Now the IndexSpecification always uses the string version of the
platform to prevent this bug.

Fixes #664
Add functional test for #664

I think the test for #664 is insufficient to prevent recurrence of the
bug.  This test uses the same operations as the resolver to help ensure
a regression does not occur.
Merge pull request #681 from jeremyevans/master

Install files starting with '.' (Fixes #680)
Add #680 and #681 to History
Ignore default gems when building indexes

When default gems were added they managed to slip their way into the
index generation code as they were not explicitly included.  This meant
uninstallable gems where included in the index.

Now the default gems are filtered out of the index.

Fixes #661
Remove trailing whitespace
Merge pull request #674 from jkanywhere/gem-version-create-bug-fix

Bug fix Gem::Version.create