Implemented Arduino 1.0.x flush() in HardwareSerial

The old flush() routine has been moved to purge()
The new flush() routine waits for the transmit shift register to be empty, then returns.
The write() function has been modified to wait if the TX FIFO is full instead of waiting if the TX shift register is full.  This automatically enables the use of the 4-or-8 level (depending on chip)  FIFO in the UART transmit system (alleviates the need for a transmit buffer like the Arduino 1.0.x has).  This should make transmitting of data somewhat more fluid.