darwin: avoid enumerating devices more than once

This patch attempts to avoid enumerating devices multiple times by
keeping a cache of device information (IOUSBDeviceInterface pointers,
device descriptors, etc) between calls to libusb_init(). This should
avoid two potential problems:

 1) Devices that respond slowly to DeviceRequest. These devices can
    take multiple seconds to respond and they usually respond with
    a failure (on older versions of OSX at least). By keeping track
    of these devices the penalty for enumerating them will be paid
    only once.
 2) Repeated enumeration of the same device may cause
    IOCreatePlugInInterfaceForService() to fail. The root cause of
    this problem is not well understood but might be a leak in
    IOUSBFamily.

To clean up the cached device information an atexit() function is
used.
darwin: increment the reference counter to the parent device
darwin: return correct error code from libusb_get_config_descriptor when the configuration is not found
all: The next release will be 1.2.0 not 1.0.16

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
descriptor.c: AlternateSettings are related by InterfaceNumber

A block of AlternateSettings for a certain InterfaceNumber does not necessarily
start with AlternateSetting 0, so check Interface Descriptors belong to
each other by using InterfaceNumber, as specified in the spec.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
linux: Add a linux_netlink_read_message helper function

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
linux: rework hotplug lock handling

I could not find if libudev is completely threadsafe anywhere, so rework
the lock handling to serialize all libudev accesses. This is a preparation
patch for adding hotplug_poll support, see the next patch in this series.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
hotplug: Add a hotplug_poll backend function

Apps which were written before hotplug support, may listen for hotplug events
on their own and call libusb_get_device_list on device addition.

In this case libusb_get_device_list will likely return a list without the new
device in there, as the hotplug event thread will still be busy enumerating
the device, which may take a while, or may not even have seen the event yet.

To avoid this add a new hotplug_poll backend function and make
libusb_get_device_list call a this before copying ctx->usb_devs to the user.

In this function the backend should ensure any pending hotplug events are
fully processed before returning.

This patch implements hotplug_poll for linux, it should probably be also
implemented for darwin.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>