uart: Don't cache serial data when no one is connected

The previous behavior would have the emulated serial port cache all data
sent by the AVR code until someone connected and then blasted them with
it. This is however not how real serial hardware works. So the UART
read/write loop was rewritten to use poll() so that we could listen for
a HUP easily which is set when no one is connected. While no one is
connected we throw any data we would send out the serial port out of the
FIFO until someone connects.