Introduce soft failures.

The intention is to have a kind of fail state that is appropriate for
using in test cases that document bugs. There is a subtle, yet
important different between a suppressed and a soft failure. A
suppressed failure counts as a real failure in the XML output, and
will be reported as a failure in graphs. Soft failures OTOH, will be
reported as skipped in the XML output, but will still run and will
block the build if they pass unexpectedly.
Are there situations where it would be reasonable, on (mostly) fixing a bug, to turn a soft one into a suppressed one ?