Add an implementation for SubprocessFactory based on the new JNI interface to Windows process management.

With this change, Bazel can build itself using native Windows process management and Ctrl-C works in server mode as expected. Yay!

Flipping the flag will come in a separate change that's easy to roll back if need be.

--
MOS_MIGRATED_REVID=126408264
diff --git a/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java b/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java
index 99e5577..f8a8a55 100644
--- a/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java
+++ b/src/main/java/com/google/devtools/build/lib/shell/Subprocess.java
@@ -42,14 +42,19 @@
   /**
    * Returns the exit value of the process.
    *
-   * <p>Throws {@code IllegalThreadStateException} if the process has not terminated yet.
+   * <p>Throws {@code IOException} if the process has not terminated yet.
    */
   int exitValue();
 
   /**
+   * Returns the if the process has finished.
+   */
+  boolean finished();
+
+  /**
    * Waits for the process to finish.
    */
-  int waitFor() throws InterruptedException;
+  void waitFor() throws InterruptedException;
 
   /**
    * Returns a stream into which data can be written that the process will get on its stdin.