Add a usb_read_ii_timeout_cancellable wrapper
Use cancellable usb transfers in the icarus driver to avoid having to loop and poll when waiting for a response and to speed up work restart response time.