Only tick when there is actually a machine to tick.

Segfaults are no fun.
The number of targets and players is passed to the machine.

It is assumed that these counts won't change during the duration
of the program.
State machine lambdas send messages directly.

This simplifies the switch statement even more,
and lets us send multiple messages per lambda.
Automatically shut of target LEDs on game stop
Spelling tweak for messages
Added handler for ResultsMessage to state machine
Moving towards shot and movement tracking

- Wired up ShotMessages for the state machine.
  Up next is to hook up MotionMessages.

- MotionMessages now carry a ShotWithMovement
  instead of just the movement.

The idea is that when a shot arrives,
it will be put in a hash table. When its movement arrives,
it will look into the hash table and remove the entry,
then get stored as the ShotWithMovement.

This two-step system ensures that shots are instantly registered
but that they can eventually be synced up with their movement
when bandwidth allows.