This allows two things:
1. good user experience when flashing devices that use FLASH
bootloaders. previously users would have to use `bl flash` or enter
flash bootloader manually.
2. arbitrary setting of cli reboot character without breaking ability to
reboot flash via configurator.
Squashed commits:
* Extract MSPConnector from code in stm32.js to allow reuse.
* Use reboot_baud when connecting via MSP.
* Ensure GUI connect is unlocked after connect failures.
* Support legacy reboot method for old firmware.
* Don't treat MSPConnector as a singleton.
* Fix `port` usage in handlers.
* Add short delay after closing serial port before re-opening it again.
There was previous logic in place to display a visual indicator for the status of the firmware flash using different colors for the progress bar. Unfortunately the logic was never working, or was broken at some point. The progress bar color would remain the default even if the flashing failed, making it difficult to recognize there was a problem.
Fixed to display the progress bar in green for success, red for failed, and blue for other "action required" types of failures. The logic was already there to try and display the red and blue indicators but they weren't working.