Improve vkernel support.
* Add a new cothread API for vkernel drivers. This creates real threads
to act as DMA engines for I/O. These threads operate OUTSIDE the
vkernel's cpu abstraction and thus work with UP builds or SMP builds with
-n 1.
* Asynchronize the virtual disk (vkd). VKD now queues I/O to a cothread
which runs it and then generates a signal to the vkernel's cpu 0 to run
the virtual device's 'interrupt' function.
* The new cothread code works better then the kqueue code because it allows
I/O's to be ganged together for bulk operation without causing a signal
for each one. The kqueue code is still used by VKE but should
be considered obsolete.