Added a global to hold all the `uthread_t` objects.
Using `clone()` instead of `pthread_create()`.
Now using `waitpid()` to prevent main from exiting.
Fixed segfaults and other bugs.

For some reason, the system crashed when the thread created by `clone()`
called `getcontext()`. This was preventing one `clone()` thread from
creating a second `clone()`.

To work around this, new threads are generated from a context which was
saved at the time of system initialization.
Added stub for `kthread_handoff()`.
A `kthread` is properly initialized when it is run.
Got more `test_uthread` messages to print.
Threw more memory at the problem.
Got even more `test_uthread`  messages to print.
Removed `ucontext.uc_stack` memory leaks.

Removed a previous misguided attempt to throw memory at the problem.
(See commit `58ab8b3`.)
Added `kthread_self()`. Added to `kthread_exit()`.
Made external threads block on `uthread_exit()`.

They block there until the number of `kthread`s drops to zero. The
system is then shutdown.
Gave `uthread_t` a running field. Started changes.
Fixed debug statements.
Fixed some subtle memory management bugs.

Thanks valgrind!
Silenced the debug print statements.