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.
Question is if we update on every call to getPreferredLocation, I am not sure if there will be any loss of efficiency or not.

Lets punt on this for now.