Hotplug for Windows, Part 2

This commit builds on the work started in commit 327aac87.
There are many changes included, with the following highlights:

* Register for all device interface notifications instead of
just USB_DEVICE. This change allows libusb to be notified
of hubs, devices, and individual interfaces for devices.
This ensures complete enumeration of composite and HID devices.
* Add some definitions to the Windows backend header, allowing
an include to be removed (helps with cross-compilation).
* Remove hotplug_poll from the Windows backend. Scanning the
entire USB device tree is not the intent of the function.
* Ensure consistent bus numbering by persisting the host controller
names and sharing this across contexts.
* Add synchronization to the hotplug thread to ensure that it starts
successfully before continuing.
* Make all function declarations and definitions consistent with regards
to pointer arguments [(void *arg) instead of (void* arg)].
* Remove libusb_context from function signatures when a libusb_device is
present.