[SPARK-2304] tera sort example program for shuffle benchmarks

This pull request adds an example program for benchmarking Spark shuffle. It dynamically generates a set of 100 byte records according to the tera sort spec, and repartitions the data based on an evenly spaced range partitioner. By design, it does NOT yet perform sorting after the range partitioning yet.

Some of the code copied directly from Hadoop and simplified (the data generator stuff).

I've been using this utility to benchmark Spark at scale, including shuffling 100TB of data in 12 mins and 300TB in 36 mins.