testbench: handle fail_*(), assert() as TAP bailout

In detail,

  - Mung::Sink loses handling of "test failed" control messages, and changes
    "test `$name' failed, rc $code" to merely pass the tap.c exit_status()
    along. (maybe it'll be useful one day.)

  - Mung::Test->end massages trivial TAP streams to have an all-skip plan at
    the front. This may cause trouble when TextReport starts reporting
    all-skip plans.

  - Mung::TestResult fills in ->status and ->fail_msg exactly once if the
    parser returns an ->is_bailout result object, as Mung::Sink will no longer
    pass that along.

  - _fail_unless() and __assert_failure() now print bailout lines (with an
    extra space, which no one minds).

  - the reporting script's own tests were updated, and ScriptModule->test_fail
    now prints a bailout line.
testbench: report bailed-out tests, make output prettier
testbench: report test points marked to-do

Regardless of whether they succeeded or not: if they are OK, then they
shouldn't be to-do.
testbench: fix sched/yield_timeslice_case time handling

It also rounds to milliseconds now. Not quite sure if that's the right number,
or 499.
testbench: recognize and mark unknown TAP lines

These are usually for non-test output, i.e. forkserv's messages, deferred logs
from timing-sensitive tests, and so forth.

Also, from this changeset on, "blue" as a sigil colour indicates a mildly
anomalous condition, such as test points that're marked TODO but succeed and
(see above).
testbench: omit the condition-plan separator when a plan line follows
testbench: make non-restarting testing the default

Chiefly because the reporting bits are rather broken in the multiple-run case.