SPARK-1767: Prefer HDFS-cached replicas when scheduling data-local tasks

This change reorders the replicas returned by
HadoopRDD#getPreferredLocations so that replicas cached by HDFS are at
the start of the list.  This requires Hadoop 2.5 or higher; previous
versions of Hadoop do not expose the information needed to determine
whether a replica is cached.
I commented about this below, but to summarize, the old and new rdds use different types and the code path is different.  There is a common function called HadoopRDD#convertSplitLocationInfo, but the types need to be "pre-processed" a bit to get to the point where we can call that.