Improve setup robustness of Windows tests

In an attempt to solve or figure out the supposed performance regression described at the bottom of #539:

* In PowerShell scripts:
  * Use $ErrorActionPreference = 'Stop' so we stop on any error
  * Use Exec helper that throws an error on any errorlevel
  * Try not to use -ErrorAction SilentlyContinue as often

* In Python scripts:
  * Use powershell -Command instead of -File which does not propagate
    the errorlevel properly.
  * For stop(), use subprocess.check_call() which is synchronous and
    which can check the exit code, unlike subprocess.Popen() which
    is asynchronous.