Initial implementation of HDFSBackedBlockRDD.

This RDD pulls the block from BlockManager, if it exists in the Block Manager. If it is not found, the data is read from a file on HDFS.
What do you mean by HDFS location preference? You mean short-circuit reads? I think we can investigate it, but it would be an optimization rather and is supported only in the latest versions of hadoop (like 2.4.0+). 

I will check with the HDFS folks to figure out how to map DNs to the file name, but I wouldn't be too worried about it right now.