test: ipc: add test for cancellation of passive sends

This happens on thread deletion and re-use. Besides that, the test iterates
through local and global addressing with and without propagation.

Also rename the "timeout" case to "error" because that's what those tests are
for. The whole organization in that suite could be better though.
testbench: make kill_thread() idempotent between calls to start_thread_long()

That's to say: calling it multiple times on the same TID, or after a
xjoin_thread() on the same TID, won't cause immense breakage. However, a FIXME
was added for the manager thread's curious behaviour. It should be considered
in detail.

Also, report invalid (out-of-space) parameter to kill_thread(). This makes it
slightly more informative before the assert blows us out of the sky.
test: ipc: test for disappearing VirtualSender in passive send

It should cause propagation to fail when the active receive finally happens.

This currently doesn't cover reception by other FromSpec values than
anythread. Another test should be written to try WaitLocal, and another to
perform the propagating IPC from a different process. A further test should
receive with a definite global/local TID: after the VirtualSender goes away,
the active receive should match the propagator's TID and only that.

There are tests for correct TID form in cancel_virtualsender, which won't mean
much when the propagator and propagee are never placed in a different address
space, but perhaps that'll be a later feature.

There's a forking mode in cancel_virtualsender which should be imitated for
cancel_sender also.
ipc, thread: break propagation with a deleted or modified TID

Though inelegant, this causes ipc:error:cancel_virtualsender to pass fully.
test: ipc: split propagation_in_active_receive off & extend it

Its origin is as the base case of cancel_virtualsender, and the extension
checks whether propagated IPC can be received with all four distinct kinds of
FromSpec. Currently the latter fails for the definite local ID when relevant.
ipc: match propagated local passive sends in find_local_sender()
test: ipc: extend cancel_virtualsender into classes of FromSpec

I.e. local, anylocal, global, any. Everything seems to be in order, except
that "no receive from virtualsender" should also imply "ordinary reception
from actual sender". This isn't being tested for, but it should be.

Also move cancel_virtualsender into the "propagate" case, because unlike other
tests in "error" it doesn't test for an error result -- merely failed
propagation.

(also fix a thinko in cancel_virtualsender's comment & space the NOTEs out.)
test: ipc: refactor receive_from_anylocalthread to be a looped test

Also move it into the "tid" tcase, which was renamed to "api". The "panic" and
"bug" tcases were moved to the end and their order reversed.
testbench: ensure BR0=0 in thread_wrapper()