usb_string_to_descriptor: set bDescriptorType

libusb_get_string_descriptor_ascii checks it
Simplify some expressions, since the compiler's not stupid
Add DFU class implementation