Update UsbDevice trait functionality with alloc_streams and free_streams. They do nothing for emulated USB devices, but implementing those for UsbHost allows USB Stream devices passthrough.

Add max_streams property to UsbEndpoint in order to limit the number of streams allocated, which in case of a real USB device would most likely result in an error.

This version of passthrough does not cover the case of unequal max numbers of streams on different endpoints. The solution to this would be grouping endpoints for multiple alloc_streams calls.