First cut implementation of recommends/suggests support

When failures are reported, any optional prerequisites
have "(optional)" prepended to the line to clearly
indicate the nature of the failing distribution
welcome bundles in the mandatory/optional new world
add a comment to make following the code easier
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.
catch it when an optional prerequisite is not known
tiny refactoring with new method name is_locally_optional
add the optionality state of prereqs on the unsatisfied dependencies overview
queue ordering and recursion check on optional prereqs
* fix order when queueing to process mandatory before optional
* no recursion check in an optional area of the tree
experimental support for recommends and suggests
more items for the next release