Update pywinusb backend and add timeout
Update pywinusb backend and add timeout

Update the pywinusb backend to support a read timeout.  If no timeout
is passed in then the default of 1s will be used.  This allows pyOCD to
gracefully fail, rather than lock up when a packet is dropped either
due to a pc problem or a firmware problem.

This patch also replaces the receive list with a deque instead, which
supports atomic O(1) pushes and pops.

oliviermartin/pyOCD,adamgreen/pyOCD,bridadan/pyOCD,0xc0170/pyOCD,adamgreen/pyOCD,c1728p9/pyOCD,adamgreen/pyOCD,wjzhang/pyOCD,pyocd/pyOCD,tgarc/pyOCD,pyocd/pyOCD,bridadan/pyOCD,bridadan/pyOCD,wjzhang/pyOCD,tgarc/pyOCD,mbedmicro/pyOCD,tgarc/pyOCD,c1728p9/pyOCD,oliviermartin/pyOCD,wjzhang/pyOCD,matthewelse/pyOCD,mesheven/pyOCD,matthewelse/pyOCD,flit/pyOCD,matthewelse/pyOCD,mbedmicro/pyOCD,0xc0170/pyOCD,mbedmicro/pyOCD,mesheven/pyOCD,c1728p9/pyOCD,oliviermartin/pyOCD,flit/pyOCD,0xc0170/pyOCD,mesheven/pyOCD