[util/subprocess] (GH-100) start refactoring layout
[util/platform] Add windows/posix platform detection
[util/subprocess] (GH-100) Stub out initial windows support
[util/subprocess] Decouple Subprocess and Runner class

The original implementation of the subprocess code left all the IO pipe
handling done by the Subprocess class. Since those pipes aren't
guaranteed to be available the runner itself needs to collect the output
and return a result instead of the subprocess class.
[subprocess/windows] (GH-100) Implement command runner

This adds command execution for Windows platforms. The implementation
relies on Open3.capture3 to run the command and collect the results. In
contrast to the POSIX runner this cannot be used in an asynchronous
manner as-is; implementing that will probably mean launching a thread
and invoking #capture3 in that thread.
[util/subprocess] Expand inline documentation.
[README] Update supported ruby versions
Merge branch 'defect/1.2.x/gh-100-windows-support'