* convert more USB errors into TransportExceptions
* add a timeout + infinite loop for read/write operations,
so that they are interruptible by Python, instead of leaving
the interface in a bad state when hard-killed
* (also ctrl+c now works if the process is waiting for usb)