[SPARK-2514] [mllib] Random RDD generator

Utilities for generating random RDDs.

RandomRDD and RandomVectorRDD are created instead of using `sc.parallelize(range:Range)` because `Range` objects in Scala can only have `size <= Int.MaxValue`. 

The object `RandomRDDGenerators` can be transformed into a generator class to reduce the number of auxiliary methods for optional arguments. 
Instead of doing this, it would be better to give each partition a seed generated by a Random object based on the RDD's seed. This way the seeds differ in more bits from each other. For example, take a look at PartitionwiseSampledRDD in the current codebase. It uses an RDD-wide seed to create a sequence of seeds, once for each partition, then it takes those as input to new RNGs for each partition.