So this is not finished yet...
It's trying to be something that can wrap up all the usb communications from new connections and removals, to sending data to and from the usb, based on your own implentation of a IMessageParser (this doesn't exist yet :-) )
So currently the 2 entry classes are the DeviceInformationSet and UsbDeviceWatcher.
I am also trying to implement it using Rx while learning Rx.