Massive refactor

This splits the file into a ton of separate files and introduces hordes of enums, typedefs and pointers to make modifying things easier. 
It contains #1, so all the light related comments from that still applies.
States are each in their own file with a setup function and a loop function. Calling `setState` will transition to that state and call the setup function.
The LED and switch functions each have their own "library" file and the encoder & airlock functions also have their own files.
Power state forcing has also been added for good measure.
I've tested this on the ardunio itself and it all seems to work correctly.