Fixed the console flow control bug. This was done by buffering unsent
data when the host device fills up and enabling a write IRQ on the
device. When the interrupt arrives, as much data from the buffer as
will go is pushed out.

Since Linux terminals don't deliver output SIGIO, they are emulated
with a separate thread polling for POLLOUT and sending a character
over a unix socket to generate the interrupt.