Improve performance of firmware

Previously I was only getting ~55 samples per second from the
orientation sensor.  After these changes I get ~88 samples per second.
The changes include:
* Use DMA to send the serial data over the UART in the background
  without consuming CPU.
* Issue single shot read command for the HMC5883L magnetometer
  immediately after reading out the previous vector rather than issuing
  the read command, waiting 6 milliseconds, and then reading out the
  vector.  There will be 10 milliseconds between reads so the 6
  milliseconds will already have elapsed.

I also added a tenth value to be sent for each line of output.  It is
the elapsed time between samples in microseconds.  This helps me
diagnose performance issues and will be convenient for future Kalman
filtering.  This required modification of each Processing sample to
expect this value and ignore it.