Install gems when $HOME does not exist

During gem installation RubyGems caches files in the home directory.  If
the home directory did not exist or was unwritable RubyGems would raise
an exception even though it had the ability to avoid updating the cache.

Now, when checking to see if the cache should be updated, RubyGems
no longer raises an exception.

Fixes #689
Use user-provided directories in `gem server`

Previously Gem::Server would reset the gem list for certain requests.
This was designed to always provide the latest installed gems for
installation.

When the --dir option was used, resetting the gem list would also revert
to the standard gem directories.  This meant the user-provided
directories would always be ignored.

Now the reset includes the gem directories the user provided to
eliminate this problem.

Fixes #696
Refactor resetting gems to a method

This makes it more clear what we're doing with Specification::dirs=
Set release version and date