Rewrote support for printf(): it uses fprintf to send output to either
USB or UART.
Newline char '\n' is handled on low level so it doesn't have to be sent
as a separate argument to printf anymore.
Fixed few compiler warnings.