update usb core to facilitate interactive sessions

- add .descriptor, .descriptor_summary, .descriptor_full properties
- add Descriptor class so when .descriptor is shown on terminal it is
  properly formatted (esp newlines)
- add Interface.endpoints that will return a list of all endpoints --
  similar properties exist for Device and Configuration
- add show_device_info with a verbose flag which can be True or "very"
  NOTE: don't particularly like using verbose flag like this, suggestions?
- 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