update usb core to facilitate interactive sessions

- add .descriptor, .descriptor_summary, .descriptor_full properties
- add Interface.endpoints that will return a list of all endpoints, and
  similar properties exist for Device and Configuration
- add show_device_info with a verbose flag which can be True or "very"
- add _try_get_string and _try_lookup helper functions
- add lookup table for usb descriptor codes
- TODO : we are still missing the interface association descriptor
- TODO : expand _lookup to include interface subclass, protocol, etc