Store a reference to the pyusb backend that found the device
Store a reference to the pyusb backend that found the device

When pyusb discovers a device, the device returned does not have a reference to
the backend that originally discovered it. That means that if the backend goes
out of scope and is cleaned up by the interpreter before the device does, the
device going out of scope may trigger some use-after-frees in cleanup functions
in libusb, since the global context was already cleaned up.

We prevent this by always storing a reference to the backend that discovered the
device when we create a Descriptor from a usb device.

Yubico/yubikey-manager,Yubico/yubikey-manager