Draft: Handle modem errors based on usb device presence
This keeps track of the state of the modem based on which usb devices are present and uses that to restart the modem if it crashes.
This should fix issues#251, and it supersedes !23 (closed)
This is still needs quite a bit of cleanup work, and potentially to handle a few more edge cases, but it should work most of the time as it is.