[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.
I was wondering if the kernel does anything special to tie sockets to processes (similar to Java lock biasing). I was asking why we bother reading n, why not just set something like `socketClosed = False` which we set to True in the except condition, rather than reusing this variable n.