Refactor the libusb plugin so we can use asynchronous I/O

SPaG one