Convert accidental tab character to spaces and use correct indentation.
Raise a separate exception for run and analysis errors.

This allows us to continue running multiple tests in the same Test
object, even if an earlier test has a system or testcode failure and
hence allows bootstrapping (i.e. creating new benchmarks through
testcode even when no previous benchmarks existed).
Check return code of running job and raise error if non-zero.
Skip unrun tests in a Test object if an earlier test encounters a system failure.

Previous unrun tests were silently ignored, which is not particularly
helpful to the user.  Explicit is better than implicit.