Hotplug

You can use it like this:

```go
func Hotplugged(desc *usb.Descriptor, event usb.HotplugEvent) bool {
	return false
}

handle, err := ctx.RegisterHotplugCallback(usb.HOTPLUG_ANY, usb.HOTPLUG_ANY, usb.HOTPLUG_ANY,
	Hotplugged,
	usb.HOTPLUG_EVENT_DEVICE_ARRIVED | usb.HOTPLUG_EVENT_DEVICE_LEFT,
	true,
)
```

Returning true in the callback will deregister it.

I also added a HandleEvents method to Context, because if your main loop is an infinite loop, the scheduler will never schedule to goroutine inside usb.go. Alternatively, you can use runtime.Gosched to give it a chance to run.
Instead of this, return a func() that, when called, unregisters the callback.  This way you can unexport the HotplugHandle type.  If you're feeling really adventurous, you could also get rid of the GC hack by forcing the closure to keep a reference to the data by using data.h instead of the local handle var.