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.
Since callbacks are local to the context, and libusb_exit will deregister all the callbacks of a context, I'd like to move this struct into Context (so once the context is GC'd, its callbacks are collected too, without affecting other contexts).
Related to this, what do you think of making Context.Close a finalizer for Context? Since Close would have to remain public for backwards compatibility, what do you think is the best way to ensure it works if called twice? Unset the finalizer if called once, so it doesn't get called again or check for c.done == nil and exit?