Fix hang on the main loop

The error data structure is a little tricky. It's not actually a
list. It's a dictionary of lists. Each key may contain one or more
errors;

This fixes a hang in the main loop when a package was required twice and
failed.
Do not attempt to use failed requirements in Mapping.best_version(). Refs #38