improve error handling, logging and incremental behaviour in Windows bui...

...ld

Check for failures in many cases and exit immediately.

If git checkout (and clone) operations have already been done do not
repeat them. With this change it is now possible to re-run
winbuild-all.ps1 without deleting a lot of files and directories
first.

Use Start-Transcript for logging, meaning that (close to) all
the build output goes to logs\winbuild-all.ps_(timestamp).log, with
less code than we needed before.

Pass git binary to xc-windows (it does its own clone and checkout
of xc-vusb) from config rather than assume it is on the path.

Rearrange some if statement trees to flatten out some logic
to make it easier to follow.

Add library modules to run commands and copy with error checking,
used in this code and by my versions of some of the windows XT repositories.

Add crosssign parameter to control code signing.