Git sources come before all but installed

This matches the behavior of bundler (I think).
Vendor sources come before installed sources

Seems natural, but I did not check bundler.
Add license example; create "Recommended" category
Add text to license attribute documentation

Link to GitHub license picker
Explain importance of specifying a license
Include license recommendation in warning
Use correct CERT_FILE constant
Test installation of files in mkmf

To support gems that require extensions using full paths (Ruby
Bug #9106) RubyGems will need to install extensions into two places.
The extension install directory and the lib directory.

This commit sets up the tests for this change.
Also install extensions files into lib/

This is one workaround for Ruby Bug #9106 where msgpack uses full
require paths to require extensions.  Now the files exist in both
places.
Load shared extensions first

This means shared extensions will be loaded before the ones in the lib
directory so compatibility can be maintained.
Fixup following @4f99883

BasicSpecification#require_paths was not updated and Gem::Ext::Builder
needed to use the require paths from the gem to determine where the
extra copy of the extension files would go.
Always error when `gem which` files do not exist

Previously `gem which` would return a successful status when any of the
files mentioned existed.

Now it returns an error when any of the files are not found.

Ruby bug #9004
Fix warnings
Fix warnings
Skip git tests when git is not installed
GitSet#load_spec is not API
Prevent zombie processes in Gem::Util::popen

IO.popen without a block does not reap exit status of the child process.

Thanks to nobu for pointing this out.
gem_github is not part of the gem.deps.rb API
Complete GemDependencyAPI documentation

But the coverage of what the methods do is terrible
Format licenses missing warning so that URL is on its own line

per @drbrain

Also, removed unnecessary :category: tags
Remove comment for Gem::Util::popen