Generic utilities are now generic down to each function.
Initial API for the pipe.
Initial implementation of the pipe object.

* The sender will (unlike the semaphore) return to user-space and have
to re-enter the kernel to send if it was previously blocked. However, a
receiver that blocks will automatically return the address of the
message buffer without having to re-enter the kernel.