Tests killed by a signal should cause the .t script to exit with an error code, otherwise its exit code will be 0, and the test harness won't be aware of the unsuccessful exit. This change also makes the test runner more robust, so attaching to a running test (e.g. with gdb or strace) won't cause the .t script to exit.