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.
Hmm, there are really two ways of doing this - either get a fresh update from the BlockManager using blockIdsToHosts or just update the RDD's own copy. The 2nd one seems fine to me since a newly created RDD with same blocks would get it from BM anyway.