thread: move the kth-only stack_page into an union
thread: don't recycle dead kernel threads into userspace

There should instead be a flush_dead_threads() function which is called before
the first scheduler sleep.
thread: split thread_ctor() out of thread_new()

And move dead_thread_list into kth.c . This allows the removal of
dead_thread_list handling at userspace thread creation, and propagation of
htable_add() failures from thread_ctor().

Also, thread_destroy() was made explicitly incompatible with kernel threads.
As of this changeset they're never destroyed, only recycled; and their stacks
are never reclaimed.
test: ipc: shore up the IPC suite

Namely use of xstart_thread() instead of start_thread() and a
fail_{if,unless}(), and xjoin_thread() instead of join_thread(). Also some
debug-printing join_thread_long() calls' failure sides now call kill_thread().
ipc: account for local peer->ipc_to in cancel_ipc_to()

And for changing versions.