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.
Actually, I just realized that store in block manager will not work efficiently. After the block gets loaded in the BM, the getPreferredLocation will not return the updated locations of the blocks, as the the location_ is initialized lazily only once (which had 0 locations earlier).