Fixing Getting Sensor Data

Tell the sensors to reset after giving us their state.

Wait until a task sends a command to the train before queing
bytes from the train. This lets us handle extra data the train
might send at startup.
Fixed Bug in Interrupt Handler

Whenever a TX interrupt was fired from the train, we also check
if CTS is asserted. We did this because the CTS interrupt doesn't
fire at startup. However, this is wrong after startup since the TX
interrupt might go off before CTS goes down.

To fix, I moved the CTS check to initialization.

Also changed:
  - ERROR macro now bwprints and turns off interrupts
  - Switch table starts off with '?'
  - Turned the ASSERT back on in uart.c
  - Changed tr_reverse_task into a server so we don't
    run out of task ids.