uart_printf made usable from all over the code

Useful for "printf" style debugging. It is made safe to call from any task, will not work if called before comms task is initialized, but will not break anything either.