improve error handling, logging and incremental behaviour in Windows build

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).

Rearrange some if statement strees to flatten out some logic
to make it easier to follow.

Get git binary location from the config rather than the path.

Flatten out some logic to make it easier to follow.