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.
No, (4) may definitely happen. What if a part of the RDD gets loaded from HDFS back into the BlockManager?
Its better to test this out thoroughly now, than have corner case bugs later, as it wont take much of extra work to unit test.