check for close timeout
add error messages if open fails
better field names for piuio struct
we only unlink urbs on error now

All URBs should finish successfully, since we actually wait for them.
The only case in which we kill an URB is if it times out when closing
the device, which is an error condition anyway.
use for_each_set_bit

No need for __ffs and loop when there's already a function that does it
for us!
rename iface to intf for consistency
slightly simpler urb allocation
more consistent logging and messages

Use the usb_device for all of the printks and be sure "piuio" gets into
the message somewhere.  If it turns out this is part of the driver or
device name, we can take it out, but we definitely want to have

  dmesg | grep piuio

work nicely for getting information.
clearly distinguish idev/udev

We have two devices here, and it's just unfair to the devices (as well
as the programmer) to call one dev and one something else.