Currently, the test runner makes the assumption that it will run commands through /bin/sh. This is obviously not true on Windows, so this patch abstracts this logic out somewhat.
Instead of having the caller build the command string himself, the caller will now pass in argument list of the form [[a, b], [c, d], ...] which will get converted into a string of the form a b; c d or a b && c d, depending on the platform. By specifying shell=True to Popen, this will pass the command to /bin/sh on Nix platforms, and cmd on Windows platforms.
Windows test runner is still broken after this change, but it gets further.
Will test on Linux soon and make appropriate fixes as necessary.
Untested on Mac / FreeBSD, would appreciate some help there if possible.