samples: usb: add i2c-tiny-usb bridge sample

Add a sample implementing the vendor request protocol of the
I2C-Tiny-USB project on top of the new USB device stack and the I2C
driver API. It makes a Zephyr board enumerate as a USB to I2C adapter
that works out of the box with the Linux i2c-tiny-usb bus driver, so
the I2C bus of the board can be accessed from the host with the
i2c-dev interface and the usual i2c-tools.

Commands addressed to the interface are handled by a minimal USB
function with a vendor specific interface without endpoints, while the
I2C transfer commands, which carry the target address in wIndex, are
handled with device vendor request nodes. Messages belonging to the
same I2C transaction are collected and executed in a single I2C
transfer to preserve repeated start conditions.

Assisted-by: Claude:fable-5
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
10 files changed