Merge the cleanup changes from master into controlboard

a few changes to note:
- Instead of duplicating the OpenROVController.js for mocking just the hardware interface (serial) is abstracted and mocked.
- Instead of for every command checking if debug and logging the command, and if we should interact with the hardware, this is done in the hardware.js