Fix Windows spark shell stdin issue

It turns out that java.lang.Process reads directly from the
parent process' stdin on Windows. This means we should avoid
spawning a thread that also attempts to redirect System.in to
the subprocess (in vain) and contends with the subprocess in
reading System.in.

This raises an issue with knowing when to terminate the JVM
in the PySpark shell, however, where Java itself is a python
subprocess. We previously relied on the Java process killing
itself on broken pipe, but this mechanism is not available on
Windows since we no longer read from System.in for the EOF.
Instead, in this environment we rely on python's shutdown
hook to kill the child process.