std.process: Add workDir parameter

https://d.puremagic.com/issues/show_bug.cgi?id=11363

Sometimes, it is useful to create a new process with a working directory different from the parent process. For example, `git submodule` and `git bisect` insist on being run from the repository root.

This currently cannot be done in a nice way when using std.process:

- Setting the current directory just before calling the program is not thread-safe, since the current directory is shared across all threads.
- Although one can run the target program from a shell, and prefix the command with `"cd " ~ escapeShellFilename(cwd) ~ " && "`, this requires spawning a shell, which has a non-negligible performance cost on Windows.

This change adds yet another default parameter to the overloads of the 6 relevant functions. I don't see a better way without e.g. replacing the overloads with a function that takes a tuple and looking at each argument's types, similar to what `std.socket.getAddressInfo` does.