Implement flash firmware API calls

Had to adjust some crap in the headers to get it to link with
libstkcomms (this is still a work in progress).
Refactor Bluetooth code to remove brittleness
Improve STK connection reliability; asynchronicity
Thread user_data through callbacks
Implement CMobot::canFlashFirmware()
flashFirmwareAsync plumbing; use .cpp for more files
Stylistic consistency
Merge branch 'f/implement-flash-firmware' into develop