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.