[SPARK-2871] [PySpark] add `comp` argument for RDD.max() and RDD.min()

RDD.max(comp=None)

        Find the maximum item in this RDD.

        @param comp: A function used to compare two elements, the builtin `cmp`
                     will be used by default.

        >>> rdd = sc.parallelize([1.0, 5.0, 43.0, 10.0])
        >>> rdd.max()
        43.0
        >>> rdd.max(lambda a, b: cmp(str(a), str(b)))
        5.0

RDD.min(comp=None)

        Find the minimum item in this RDD.

        @param comp: A function used to compare two elements, the builtin `cmp`
                     will be used by default.

        >>> rdd = sc.parallelize([2.0, 5.0, 43.0, 10.0])
        >>> rdd.min()
        2.0
        >>> rdd.min(lambda a, b: cmp(str(a), str(b)))
        10.0
We already use `key` in Python instead of `Ordering` in Scala, so I had change it into `key`.

Also , I would like to add `key` to top(), will be helpful, such as:

rdd.map(lambda x: (x, 1)).reduce(add).top(20, key=itemgetter(1))

We already have `ord` in Scala. Should I add this in this PR?