ipc: remove assert checks after calls to send_xfer_fault()

It already guarantees that @t's status will be one of {R_RECV, RECV_WAIT,
SEND_WAIT}. Though it should most logically not be R_RECV as there's only one
possible sender, and that one is already known to have had its receive phase
completed; so there's one scheduler trip to save in that path.
thread: handle TID version overwrite in ThreadControl
testbench: thread: add TID-stomp panic test

The real test case will wait for other things.
testbench: thread: add test of ThreadControl from non-privileged space

Also remove the thread that's not supposed to be created at the end of
threadctl_basic.
thread: test caller's space for SF_PRIVILEGE in ThreadControl
thread: signal invalid spacespec from ThreadControl

Strictly speaking it already did, but this makes the failure path atomic; i.e.
it doesn't leave a half-constructed, spaceless thread in the hash table on
failure. Error reporting was also relocated, somewhat, to labels "out_of_mem"
and "invd_space" at the function bottom.

Also, moved space_remove_thread() next to the other space-related things in
thread_destroy(). It no longer needs handle the ->space == NULL case; instead,
space_free() already assumes a threadless space which is fine for when space
alloc didn't fail but thread alloc did.
thread: use user accessors for L4_ThreadId_t in ThreadControl

That's to say, the ones from <l4/types.h>.
testbench: move fork_tid() into process.c, export it
testbench: run tests in a forked child task

When not told to do otherwise. Also, all TCases that have checked fixtures
must now have the do_fork attribute set (which it is, unless changed). It
should be cleared for e.g. ThreadControl, SpaceControl, and other tests of
privileged APIs.
testbench: sched: make priority relative in r_recv_timeout_test

Also improve some diags and fail_*() calls.
testbench: disable forking for self- and privileged API tests

For obvious reasons.
testbench: sched: clean up preempt_exn_case

Much of that test suite fails because of inadequate support for setting
ts_len, sens_pri, priority, etc. of threads created within non-privileged
spaces, so they'll run without forking. This'll be fixed when forkserv is
converted to use muidl in its primary interface.
thread: move the IPC assert into thread_sleep() non-zero half

I.e. the one that's different from thread_wake(). It checks that the thread is
in IPC, and not R_RECV (because that isn't sleeping).
testbench: move tsd_*() into tsd.c

Still exported in defs.h. This changeset adds tsd_clear(), which is called in
the current thread's context before it exits.
testbench: ipc: temporarily disable forking in the "timeout" case

This is also due to the insufficient parameter supply to forkserv during
thread creation from an unprivileged process: namely, the preempt control
portion of Schedule doesn't apply.
add a stub prefix to L4X2::FaultHandler
testbench: give forkserv a valid thread ID

I.e. one that doesn't have (version & 0x3f) == 0, like 768 would. This is
apparently not caught by ThreadControl, though it should.
testbench: rewrite forkserv IPC loop in IDL

And update call sites to use the generated stubs. This is a big changeset that
manages a net reduction in lines of code: hooray!
testbench: pass all Schedule parameters in forward_new_thread()

They aren't applied by handle_new_thread(), but that function has a few other
things that're in need of a fixing already, so they'll wait.
testbench: clean up forkserv.idl

Not that it was especially dirty or anything.