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.
Would you mind beefing up the documentation here a bit? I am having trouble reading through and quickly finding out the difference between HostTaskLocation and ExecutorCacheTaskLocation. I guess the latter is exclusively used for the BlockManager cache, but it would be good to be explicit.