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

Probably, I just copied it from either one of our examples, or theirs from their code. Will try dropping and testing.