Add a USB forwarding application that works on Windows too

It has been tested with a Windows VM sending a few messages. The VM may
have gained some necessary state during testing so it won't work on
other Windows machines, but I've tried to clear it all out and it still
worked.

Change-Id: I814fd57653cd8d86534516e8c4f626746146e626
diff --git a/motors/usb/hid.cc b/motors/usb/hid.cc
index 24ffe24..0c5075e 100644
--- a/motors/usb/hid.cc
+++ b/motors/usb/hid.cc
@@ -61,16 +61,12 @@
   interface_ = AddInterface();
   in_endpoint_ = AddEndpoint();
 
-  {
-    const auto iad_descriptor = CreateDescriptor(
-        iad_descriptor_length(), UsbDescriptorType::kInterfaceAssociation);
-    iad_descriptor->AddByte(interface_);   // bFirstInterface
-    iad_descriptor->AddByte(1);            // bInterfaceCount
-    iad_descriptor->AddByte(hid_class());  // bFunctionClass
-    iad_descriptor->AddByte(0);            // bFunctionSubClass
-    iad_descriptor->AddByte(0);            // bFunctionProtocol
-    iad_descriptor->AddByte(device()->AddString("HidIad"));  // iFunction
-  }
+  CreateIadDescriptor(
+      /*first_interface=*/interface_,
+      /*interface_count=*/1,
+      /*function_class=*/hid_class(),
+      /*function_subclass=*/0,
+      /*function_protocol=*/0, "HidIad");
 
   {
     const auto interface_descriptor = CreateDescriptor(