Generalize UART handling code.
Allow command handling functions to read arbitrary data from the UART interface, then re-register the command parsing callback.
Cleanup some UART code, fix continuous newline monitoring, and get rid of some extraneous warnings.