test: space: add thread cleanup to `spacectl_iface'

This was breaking something once it'd reach TID 23042, or rather, the
unfinished "motion between spaces" path of sys_threadcontrol was causing a
panic when the operation was attempted unintended. So, hooray for panics in
unimplemented paths.

Now it's fixed.
test: self: add `many_fork_sequence'

This tests whether forkserv can fork-and-wait indefinitely, or close enough.
The idea being that any fatally silly memory leaks along this path would be
provoked by a 1024-fold fork/wait cycle; this may be fanciful, but the test
seems to pass and runs quickly enough.
x86: use only non-raising variants of FSAVE

This is reasonable: the #NM handler shouldn't observe user-space exceptions
anyhow.
test: x86: show that each thread's x87 context is distinct

Demonstrated by twiddling of the control word. This breaks the #NM handler by
having an exception pop at FWAIT;FXSAVE. The fix is to remove FWAIT from the
fsave/fxsave functions entirely.
make dlmalloc align returned memory to 16 bytes for SSE

The absence of this was causing #GP(0) from MOVAPS instructions,
which were rendered mysterious by insufficient reporting of non-I/O
insn #GP(0) in exception.c . A note was added to the latter.
use the KIP structure in L4_MemoryDesc()

Squashes a FIXME.
space: don't attempt to free bootstrap utcb_pages

This should cause them to linger in kernel_space indefinitely.
kth: recycle stack pages correctly

I.e. don't blow the assert when thread_ctor() reassigns the thread struct
via struct-literal syntax, nulling out fields that weren't given -- such as
u1.stack_page .
kth: increase max kths to 256, add many-kths test