[SPARK-2377] Python API for Streaming

This patch brings Python API for Streaming.

This patch is based on work from @giwa
This `TransformFunction` (and its Java counterpart) is one of the most complex parts of the PySpark Streaming code, so it would help to have some additional documentation explaining how it works.

To confirm my understanding:

> This class wraps a function `RDD[X] -> RDD[Y]` that was passed to `DStream.transform()`, allowing it to be called from Java via Py4J's callback server.  Java calls this function with a sequence of JavaRDDs and this function returns a single JavaRDD pointer back to Java.

Is that an accurate summary?