libusb: remove the timeouts in hid_write()

The libusb/hid.c:hid_write() has timeouts in its calls to
libusb_interrupt_transfer and libusb_control_transfer().  This timeout
can sometimes be tripped (e.g., if the underlying hardware is slow),
and no sensible error code is returned -- you just get a -1.  Hence,
the caller can't know that it could just try again because the only
error that occurred was a timeout (or that the message may have
actually gotten through).

Additionally, the other hid.c:hid_write() implementations -- mac, and
windows -- are all blocking and do not timeout.  This makes the
behavior of the libusb hid_write() different than the others, which
seems weird.  The linux/hid.c:hid_write() is seemingly blocking
(because it uses a blocking write(2)), but it can timeout in the
kernel.  A follow on commit will make the linux hid.c: hid_write()
behavior be truly blocking, too.

This commit simply sets the libusb timeouts to 0 (i.e., infinite) to
make the libusb hid_write() behave like the others.
linux: make hid_write() be truly blocking

If write() fails due to timeout, loop around and try again.  This
makes the linux/hid_write() exhibit the same blocking behavior as the
other hid_write() implementations.