add synchronous UART transmission and use it in exceptions

The default ISR (particularly the HardFault handler) print information,
but this information was not displayed on the console because the UART
IRQ is lower than some default blocking IRQ.
Allowing to set synchronous transfer corrects this.

The underlying Atmel exception library had to be modified to use the
synchronous output.

Making UART_PutChar always synchronous when called from an ISR is not
desired because we use TRACE_ macros is some ISR. The synchronous
output must be set explicitly.

Change-Id: I1b4ace5185cf2dc32684934ed12bf6a8682e9bad
diff --git a/firmware/libcommon/source/fputs.c b/firmware/libcommon/source/fputs.c
index ca6f851..110f68e 100644
--- a/firmware/libcommon/source/fputs.c
+++ b/firmware/libcommon/source/fputs.c
@@ -26,6 +26,19 @@
 int fputs(const char *s, FILE *stream)
 {
 	while (*s != '\0')
-		UART_PutChar(*s++);
+		fputc(*s++, stream);
+	return 0;
+}
+
+int fputc_sync(int c, FILE *stream)
+{
+	UART_PutChar_Sync(c);
+	return c;
+}
+
+int fputs_sync(const char *s, FILE *stream)
+{
+	while (*s != '\0')
+		fputc_sync(*s++, stream);
 	return 0;
 }