Reduced use of eval in RubyGems

The uses of eval found were needless as other, more expressive methods
of meta-programming are also available.

Removed the private class method Gem::each_load_path as it is no longer
used by RubyGems and was not callable.
Clear spec and files when verification fails

While a user must use the accessors, if the gem is unsigned you
shouldn't be able to extract information from it for extra protection.
Added test for Gem::ConfigFile#rubygems_api_key=

This test supports #438
Failing test for #438

Applying #438 won't fix this test as it uses abort instead of
terminate_interaction.  That will be addressed in a follow-up commit.
Merge pull request #438 from havenwood/master

If `credentials` file has permissions other than 0600, abort.

The rubygems.org credentials file was saved with invalid credentials in the past.  Since this may have lead to disclosure of the credentials to a third party in the past abort with an error instead of attempting to fix it.
Fix tests for #438

Test for permissions before overwriting with new data to prevent
disclosure of a new key.

Test permissions using integer instead of string comparison.

Use alert_error and terminate_interaction (RubyGems API) instead of
abort.
Removed duplicate rubygems_api_keys= tests
Enforce credential permissions on read and write

Writing the credentials was covered but not reading them.

Updated wording to make links easier to copy and paste.

Suggested the user "should" reset their credentials if there is a
possibility of disclosure.

This completes #438.
Updated History.txt for #438
Use #send, remove_instance_variable is private
Allow credential creation with `gem push --host`

Previously if no credentials were available when pushing with --host
`gem` would try to log you in to rubygems.org.

Now RubyGems will request credentials from whichever host you have
configured using the API and your password.

Fixes #431
Only detect gemdep files, not directories, etc.

If you had a directory that matched a gemdep file name such as Isolate
RubyGems would try to load it.  This would cause an exception when
trying to read the directory.

Now only file entries are examined.
Disable gemdeps detection when building extensions

If an extension has an Gemfile or Isolate file RubyGems would try to
load this when building the extension.  This could cause failures if the
unsupported bundler API methods were used.

RubyGems now disables gemdeps file detection when building extensions.

Fixes #436
Added TODO, use Process.spawn in the future