Add a working CDC TTY USB device

I'm pretty sure it reliably moves data in both directions, but it has a
lot of TODOs left wrt error handling.

Change-Id: I1d96a63eea7bdc08f6ec78c868c4a1ccbfbda600
diff --git a/motors/usb/BUILD b/motors/usb/BUILD
index 55b1790..0696354 100644
--- a/motors/usb/BUILD
+++ b/motors/usb/BUILD
@@ -45,6 +45,45 @@
 )
 
 cc_library(
+  name = 'cdc',
+  visibility = ['//visibility:public'],
+  hdrs = [
+    'cdc.h',
+  ],
+  srcs = [
+    'cdc.cc',
+  ],
+  deps = [
+    ':usb',
+    ':queue',
+    '//motors:util',
+  ],
+  restricted_to = mcu_cpus,
+)
+
+cc_library(
+  name = 'queue',
+  hdrs = [
+    'queue.h',
+  ],
+  srcs = [
+    'queue.cc',
+  ],
+  compatible_with = mcu_cpus,
+)
+
+cc_test(
+  name = 'queue_test',
+  srcs = [
+    'queue_test.cc',
+  ],
+  deps = [
+    ':queue',
+    '//aos/testing:googletest',
+  ],
+)
+
+cc_library(
   name = 'constants',
   hdrs = [
     'constants.h',