Clean up Subprocess Runner API, remove code duplication from Runner::POSIX

This is based on GH-264.