Enable SIGINT (Ctrl-C) to kill testall instead of leaving it running.

It's quite convoluted, but basically it is a cascade of traps leading
up to killing the actual testall process. Note that it does not kill
any jobs that testall might have created. The hope is that these will
quit on their own in a short time. Basically each level you you want
to kill requires a trap in the parent.
(Pre-existing) This comment is confusing - I do not see return-code.$$ being stored "above" - where do pid.$$, output.$$ and return-code.$$ get written ?  I see pid.$$ read by the trap-handlers and deleted, output.$$ tailed and deleted and return-code.$$ read and deleted, but I don't see them written.  That's done by preserve-output-and-status.sh, so the comment should refer to that, not "above".