Test UpdateCommand#fetch_remote_gems

This method is untested, but will need to change for #688
Allow a SourceFetchProblem to be raised

Ruby uses #exception to convert an object into an Exception subclass
suitable for raising.  This aliases #error to #exception so we can type
less when re-raising after such a problem.
Re-raise exceptions when looking for latest gems

In the update command RubyGems was ignoring exceptions raised when
determining the latest version.

This meant that `gem update --system` from a rubygems with invalid
certificates would incorrectly report "nothing to update".

Now, if an error is raised and captured, the update command will
re-raise the exception which gives useful feedback to the user.

Fixes #688