Uniformize dependency translation errors.

There was a non-uniform set of exceptions being raised and trapped (or not!)
in the translation call paths.  This unfiromizes Web and CachedWeb to always
raise FetchError when opening urls and then hardens SourceLink and EggLink
to trap for this and re-raise UnreadableLink when attempting link fetches.
Finally, EggTranslator and SourceTranslator now trap Link fetch errors and
log & return None to allow Obtainer to proceed to the next available link if
any instead of failing fast on a bad link.