Adding RDD unique self cross product

Hi,

I am using Spark in some data analysis project and I frequently requires the unique self cross product for a single RDD. Since I am using Spark's Java API, I added the new function "selfCartesian" JavaRDDLike.scala. I also modify RDD.scala where it calls function "CartesianRDD2". "CartesianRDD2" Has similar implementation to "CartesianRDD", where it only returns elements (a, b) if a.index <= b.index. I have been using this Spark's modification for couple of months and the function always return correct results

I hope this new small feature would be favorable for other Spark users.

Regards,
Zuhair Khayyat