Make USB device lookup more robust

The Asus T100 table seems to have a problem with a multi-interface
device on Windows that is reported on the same port on the hub as
a Brick connected to the same hub. This confuses libusb because the
port number is supposed to be unique. In the end libusb reports this
multi-interface device as if it would be a Brick.

Make the device lookup process more robust by checking vendor and
product ID before opening a USB device and don't abort on the first
error during the lookup process.

Also get rid of the libusb_device pointer stored per USBStack. The
libusb_device_handle is enough.
windows: Update libusbx fork