Fixes 3 cases 
1) Fast baud rate keep tx and tx shift full.
2) Fast baud ensure the ints are on if there is data in the queue
3) If called from a higher priority interrupt manualy empty the queue.
Fixed !=
Dispite wha the manual says re:TXE on empty DR, SR Even at 115200 the
loop added no value.
Merge branch 'serial_fix' of https://github.com/davids5/core-firmware into davids5-serial_fix