More restructuring...

I keep finding myself fighting with the linked list API.
I might try and replace it to see if I can do better...

Anyways, this commit is large. It changes some names, adds some
wrapper structs to help iteration, etc.

Importantly though, I changed how we deal with devices. Each linked
list node for hotplug drivers now also carries a list of devices associated with that driver.
No allocations are made for this list so it's decently light. The nice part about this is
that we can figure out what devices to disconnect regardless of whether or not they are
attached, without having to modify the underlying libusb_device structure.

It also gets rid of the need to go through the entire list of devices.