Optimize PySpark worker invocation

This is an initial patch to reduce the startup time of PySpark workers by preforking the processes. Code review would be appreciated. Currently passes all PySpark tests, and additional tests will be added.