Revert firmware changes from the last few revisions

These changes were originally built in separate commits, which I'll
merge next to preserve all history.
firmware: Initial prototype implementation
firmware: Add test sketch for the scout side of the backpack bus
firmware: Add "make diffdump" command

This generates assembly stripped of addresses, so it can be used for a
quick before/after comparison.
firmware: Add EEPROM write command
firmware: Add an address parameter to read/write EEPROM commands
firmware: Replace if-cascades with switches
firmware: Don't always read EEPROM when ACTION_SEND is set

Even though all data we ever send is EEPROM data (or our unique id,
which is just special EEPROM data), we should still check the state for
when to access the EEPROM. By using a switch fallthrough, we can do this
without duplicating any code.
firmware: Rename STATE_SEND_ADDRESS to STATE_SEND_UNIQUE_ID
firmware: Move EEPROM functions to a more sane spot
firmware: Restructure globals section

This moves all global variables to the same spot, adds comments to some
enums and renames two constants.
firmware: Add make size target

Additionally restructure the makefile a bit to allow make to do some
actual dependency tracking.
firmware: Split main into a setup/loop function

This isn't strictly needed, but it will help to work around a compiler
bug next.
firmware: Remove all default values for global variables

This saves nearly 20 bytes of flash, since the compiler generates a loop
that copies data from flash into RAM on reset, which is a lot longer
than just setting those values in the setup function.
firmware: Store all global variables in registers

This saves over 200 bytes of flash space. Most important savings are
because variables no longer need to be loaded and saved to memory, which
saves a few bytes on every variable access. Additionally, because there
are no longer any globals in memory, the "clear bss" loop is no longer
generated by the compiler, saving a few more bytes.

GCC does have a bug related to global register variables, for which a
workaround is added when using GCC < 4.8 (the bug is fixed in 4.8).
firmware: Fix sending of acks

This code isn't actually used yet, but there were two lines missing.
This should fix things, though the code hasn't actually been tested
yet.
firmware: Recompile when the Makefile changes
firmware: Restructure timera code a bit

This makes the action to be taken by the timera interrupt handler
explicit in a new global variable. This makes the code a bit more clear.

Also, currently the shift to the next bit only happens when the timera
interrupt fires, even though it could sometimes happen in the int0
interrupt already. Additionally, in some cases the timera interrupt
doesn't even need to fire (saving power). This change prepares for
making that possible.

On the downside, this commit makes the code a bit bigger (but only 18
bytes, part of which is because GCC is missing some optimizations...).
firmware: Compile with -Wall
firmware: Prevent timer interrupts for sending 0 bits

Previously, these were required because the timera interrupt handler
needed to advance the next_bit pointer. Now, the int0 handler can also
do this if the timera handler isn't needed for anything else.