serial_flush() allows flushing the serial buffer from anywhere in
- When run from thread mode it will flush to UART, CDC-ACM and BLE. This is similar to what the serial task would do once it is rescheduled.
- When run inside an exception handler, it will only flush to UART because CDC-ACM and BLE cannot be flushed from an ISR. Note that characters flushed this way will never appear on the other outputs, even if the serial task is scheduled at some point afterwards.
The main use of this function is to ensure output of messages even in cases of critical failures.
Closes #164 (closed).