libusb allocation stuff had been moved inside of smart pointer classes to handle automatic cleanup
the public device handle implementation now holds an actual libusb device inside of it
needs testing - all platforms
Handle degenerate usage of send buffer commits. If the buffer
is destroyed without ever being submitted, submit a zero byte
transfer to return control to the underlying structure. If a
committed buffer is re-committed, then report an error message
and return 0 bytes back.