[SPARK-2377] Python API for Streaming

This patch brings Python API for Streaming.

This patch is based on work from @giwa
There is a slight inconsistency with this approach of the setting the default of number of partitions. The Scala/Java DStream API uses an older way of determining the number of partitions, which uses the default parallelism configuration (see code in PairDStreamFunctions). But this uses the smarter default partitions based on the number of partitions of the pre-shuffle RDD. There maybe significant performance difference. It maybe a good idea to keep things consistent, and consider improving this in a different JIRA+PR.