Completely rewrote system test

Looking at the changes in this commit is extremely unhelpful, and
reading the final version of this file will be necessary to
understanding it. General changes are listed below:
--Changed the function tally to use an enumeration instead
--Removed lots of verbose code and added it to a separate task
--Fixed the general structure to use software shortcuts wherever
possible, so that we can test the software equally with the hardware. If
the software breaks, it's important to know before a match so we can fix
it.