Replace assert_set with assert_resolves_to

The assertion now calls #resolve on the input which will allow printing
of the explanation when resolution fails.
Improved assert_resolve_to failure message

Now the explanation is included.
Add Specification#installed_by_version

This tracks the version of rubygems that installed a gem.  This will be
used to determine if extensions need to be built for the gem, as the
current checks are insufficient for gems installed with older versions
where the extensions are already built.
Only build extensions for newly installed gems

This prevents compilation attempts during gem activation for gems
installed by previous versions of RubyGems which already have the
extensions built.