Teach /bin/cheritest that tests can return results, not just crash or not
crash, which is also done via the shared memory page between the managing
process and each test process.  Before terminating, any test that doesn't
expect to die due to a signal must declare success or failure, and if
failure, describe the failure via a human-readable string.

Provide two utility functions tests can use to report a result and
immediately terminate: testresult_success(), which accepts no argument,
and test_result_errx(), which takes a format string as an argument.

Update all tests to return results; in a few places, more work remains to
be done -- in particular, for invocation tests, we now want to test that
the required semantics of the tested code are correct, not just that it
failed to crash.