update usb core to facilitate interactive sessions

- add .descriptor and .summary properties
  shown on a 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_devices with a verbose flag for more information
- add _try_get_string and _try_lookup helper functions
- add _Descriptor, hidden helper subclass of str so when .descriptor is
- 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