Currying RDD.zipPartitions 

The previous argument ordering to zipPartitions requires additional type annotation and is slightly more difficult to use.  By currying the method we are able to automatically resolve the types of the arguments to the final map function.  Previously we would have written:
```scala
rdd1.zipPartitions( (iter1: Iterator[T1], iter2: Iterator[T2], iter3: Iterator[T2]) =>  /* some code */, rdd2, rdd3)
```
now we can write:
```scala
rdd1.zipPartitions(rdd2, rdd3)( (iter1, iter2, iter3) => /*some code */ )
```
I also updated the Java interface to reflect the reordering (without currying).