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 only has to
    be paid 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.