Fix tearing on Windows and Mac OS hosts

I'd been assuming that the OS always copied our USB transfer buffer at submit-time. Turns out that this is true for Linux but not for Windows or Mac. This caused tearing when fcserver received a new frame while previous frame(s) were still queued in the USB host controller.

Fixed this by copying to a per-transfer buffer on Windows and Mac. Linux is unaffected. We avoid performing an additional copy there.