[SPARK-2377] Python API for Streaming

This patch brings Python API for Streaming.

This patch is based on work from @giwa
I think I get it. You need a simple trait / interface (`PythonRDDFunction`) that is used as the interface for creating python function objects through py4j. And then you need to convert it to a `Function2` object (using `RDDFunction` class) so that it can be passed on to `DStream.foreachRDD`. However, I am not sure this warrants a separate class with a confusing name. How about static conversions added to `object PythonRDDFunction` like 
```
object PythonRDDFunction {
   implicit def toFunction2(): Option[Function2[....]] = {
   }
}
```