feat(serial): Add serial_flush function

serial_flush() allows flushing the serial buffer from anywhere in
Epicardium.

- 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.

Signed-off-by: Rahix <rahix@rahix.de>
2 jobs for !314 with rahix/flush in 59 seconds (queued for 3 seconds)
detached
Status Name Job ID Coverage
  Build
passed build #7491

00:00:29

 
  Test
passed lint #7492

00:00:30