started getting stuff to compile for ARM

There were lots of places where the ARM compiler is pickier about
alignment and the externals stuff had to be reworked to use the cross
compiler for everything.

The main issues left are the lack of opencv and the x86 asm.
diff --git a/aos/common/logging/logging_impl.cc b/aos/common/logging/logging_impl.cc
index bced835..a76c28a 100644
--- a/aos/common/logging/logging_impl.cc
+++ b/aos/common/logging/logging_impl.cc
@@ -57,8 +57,8 @@
   const size_t size = output_size - strlen(continued);
   const int ret = vsnprintf(output, size, format, ap);
   if (ret < 0) {
-    LOG(FATAL, "vsnprintf(%p, %zd, %s, %p) failed with %d (%s)\n",
-        output, size, format, ap, errno, strerror(errno));
+    LOG(FATAL, "vsnprintf(%p, %zd, %s, args) failed with %d (%s)\n",
+        output, size, format, errno, strerror(errno));
   } else if (static_cast<uintmax_t>(ret) >= static_cast<uintmax_t>(size)) {
     // Overwrite the '\0' at the end of the existing data and
     // copy in the one on the end of continued.