Consolidate / clean up exception types used for OS exceptions

https://issues.dlang.org/show_bug.cgi?id=13620
I guess this is technically a breaking change as it changes the contract for `pipeProcess`, but I agree it really should be a logic error: it's probably safe to say that in the vast majority of cases, the redirect flags are program constants.