Implement uvc_get_device and new uvc_get_libusb_handle.

uvc_get_libusb_handle can be used to interface with other interfaces of the same USB device.
Make the input, output, processing and extension units public.

This will allow client libraries to query and access these units.
Handle a few more LIBUSB_TRANSFER status codes (also eliminates some clang warnings)