avoid stopping queue on optional failures

This refactors the CPAN::Shell 'failed' method so that the queue
running can use the same logic to find out whether failures were
on a mandatory module or optional modules.

Prior to this change, a mandatory module could succeed, but
halt_on_failure would still stop because there were earlier optional
failures.
Reword failure message for clarity

If mandatory modules succeed but optional modules fail, the old text
looked a bit like "PASS..." followed by "Failed during this command:" which
caused me to have a bit of a double-take.  I reworded "Failed during"
to "Failures during" so it's clearer that it's additional information.