Add an optional Ordering parameter to PairRDDFunctions.

This parameter will be provided by the compiler if an Ordering for the
given type exists, but we will get null if it doesn't instead of an
error. This will be useful when we want to implement sorting-based
external spills.

The API is currently only in Scala -- in Java we'd have to add new
versions of mapToPair and such that take a Comparator, or a new method
to add a "type hint" to an RDD. We can address those later though.

Unfortunately requiring all keys to be Comparable would not work without
requiring RDDs in general to contain only Comparable types. The reason
is that methods such as distinct() and intersection() do a shuffle, but
should be usable on RDDs of any type. So ordering will have to remain an
optimization for the types that can be ordered.