report_all() was not reading descriptors from prog mem.
Added symbols for OCIEnx, OCFnx, and TIMERn_COMPx_vect, needed for watchdogs.
Defined timer "pins" for watchdog interrupts on motors and lasers.
Cosmetic only.
Now compiles cleanly with FW_NDEBUG defined.
Removed chatty messages.
Fixed compiler warning when compiled with FW_NDEBUG defined.
init_lasers() is no longer inline.
Now sets just the TOVn bit in TIFRn to clear the interrupt condition.
Thanks to Corey Kosak <kosak@kosak.com> for finding this bug.
Added laser watchdog.  Currently it just asserts.
Now calls init_engine() startup.
Added watchdogs for motor timers.  Currently, they just assert.
Now calls init_engine() at startup.
Changed queue locking.  Now uses ATOMIC_BLOCK.
Fixed initialization of TCCRnx registers.
This bug reported by Corey Kosak <kosak@kosak.com>, thanks!
Misc. tasks, including debugging the timer interrupt bug.
No longer crashes when no USB serial device is found.
Use a local copy of basename() since it's different on Linux and OS X.
Fix OS X compiler warning.
Now uses SO_NOSIGPIPE on OS X since it doesn't have MSG_NOSIGPIPE.