RandomRDDGenerator: initial design

Looking for feedback on design decisions. Very rough draft and untested. Please ignore style issues. I would like suggestions on better naming though.

RandomVectorRDD would be very similar to RandomRDD, but emit an Iterator of Vectors instead.
Actually since we discussed having normalRDD generate the standard normal (mean 0 std 1) and let the users call `map` to project it onto a different normal distribution (and I think we can do this analogously for other distributions e.g. Poisson with lambda = 0), having a separate RDD class for each distribution would allow us to bake the `map` function into the RDD object instead of putting instructions on how to do it in the docs (I know this is status quo for a lot of other packages). But on the other hand, we definitely don't want people to feel that once they implement the DistributionGenerator class, they're also on the hook for subclassing RandomRDD. Of course, the approach where we don't create a RandomRDD class is perhaps the most low maintenance (but as I pointed out in a related comment, if the RDD size required is larger than the supported range of Int, the logic becomes more complex than the 4 lines in Xiangrui's comment). Thoughts? @mengxr @falaki