cleaned up lots of not-so-niceties and a few bugs

I built everything with clang (hackishly in some areas) and it spit out a bunch
of warnings.
diff --git a/aos/common/die.h b/aos/common/die.h
index d973b42..3c5cca9 100644
--- a/aos/common/die.h
+++ b/aos/common/die.h
@@ -3,6 +3,8 @@
 
 #include <stdarg.h>
 
+#include "aos/common/macros.h"
+
 namespace aos {
 
 // Terminates the task/process and logs a message (without using the logging
@@ -10,10 +12,10 @@
 // (code that can should LOG(FATAL), which calls this).
 void Die(const char *format, ...)
     __attribute__((noreturn))
-    __attribute__((format(gnu_printf, 1, 2)));
+    __attribute__((format(GOOD_PRINTF_FORMAT_TYPE, 1, 2)));
 void VDie(const char *format, va_list args)
     __attribute__((noreturn))
-    __attribute__((format(gnu_printf, 1, 0)));
+    __attribute__((format(GOOD_PRINTF_FORMAT_TYPE, 1, 0)));
 
 // Turns on (or off) "test mode", where (V)Die doesn't write out files and
 // doesn't print to stdout.