Initial commit of the new libusb plugin code.

Breaking this up so it's easier for you to review.
Is there any reason these aren't taking a DeviceInformation and a string? The code to use them isn't in this PR, so that may affect it.