[SPARK-1740] [PySpark] kill the python worker

Kill only the python worker related to cancelled tasks.

The daemon will start a background thread to monitor all the opened sockets for all workers. If the socket is closed by JVM, this thread will kill the worker.

When an task is cancelled, the socket to worker will be closed, then the worker will be killed by deamon.
Yep, this looks like a compiler bug.  This file compiles in 2.10.4 and gives the expected error in 2.11.2:

```scala
import scala.collection.JavaConversions._
import java.lang.Process
import java.lang.ProcessBuilder

object ImplicitBug {
  def main(args: Seq[String]) {
    val simpleWorkers = new scala.collection.mutable.WeakHashMap[Int, Process]()
    val pb = new ProcessBuilder()
    simpleWorkers.put(1, pb)
  }
}
```

For the curious, here's the actual implicit conversions that led to this bug (run `/scala-2.10.4/bin/scalac -Xprint:typer ImplicitBug.scala` to get this output):

```scala
[[syntax trees at end of                     typer]] // ImplicitBug.scala
package <empty> {
  import scala.collection.JavaConversions._;
  import java.lang.Process;
  import java.lang.ProcessBuilder;
  object ImplicitBug extends scala.AnyRef {
    def <init>(): ImplicitBug.type = {
      ImplicitBug.super.<init>();
      ()
    };
    def main(args: Seq[String]): Unit = {
      val simpleWorkers: scala.collection.mutable.WeakHashMap[Int,Process] = new scala.collection.mutable.WeakHashMap[Int,Process]();
      val pb: ProcessBuilder = new java.lang.ProcessBuilder();
      {
        // Somehow it became a map with `Object` values:
        scala.collection.JavaConversions.mapAsJavaMap[Int, Object](simpleWorkers).put(1, pb);
        ()
      }
    }
  }
}
```