Windows: Fix broken WDK compilation

* 790ffc78b008a03c95d10899f53997b504f55c72 moved the inclusion of poll_windows.h
  after the use of struct timeval, which removed the hidden winsock.h include
  where timeval is defined on the WDK.
* Make the winsock.h include explicit
Windows: Don't duplicate paths for HID interfaces

* This caused the many_device_lists to fail after 32 iterations
* Closes #69
Tests: Simplify stdout redirection and fix Windows assertion error on cleanup

* cleanup_test_output() produced an assertion error when compiled with MSVC
  due to closing ctx->output_file
* set ctx->output_file to stdout by default
WinCE: Don't confirm protocol stalls with device in wince_transfer_callback()

When wince_transfer_callback() observes a stall (io_result set to
ERROR_NOT_SUPPORTED), it checks with the device (by sending a GET_STATUS
control transfer) that the endpoint is really stalled. This check is not
suitable for protocol stalls as these are always cleared at the start of the
next control transfer. When a protocol stall occurs, wince_transfer_callback()
observes that the corresponding control endpoint does not remain stalled and so
forces io_result to ERROR_SUCCESS. This then prevents applications from
detecting that a control request was not supported by the device.

This patch prevents wince_transfer_callback() from attempting to confirm
protocol stalls with the device, allowing io_result to remain set to
ERROR_NOT_SUPPORTED. A couple of comments and a debug log message within
wince_transfer_callback() are also corrected.
Tests: Fix broken OS-X and Linux builds

* _dup2 is Windows only. Use dup2 instead
* Breakage was introduced in 76eecc6ce11d1bedee369859899901037dcd4cc2