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.
Correct me if I am missing something, but from the code it seems like you are always writing to HDFS, never writing to BlockManager, and then using HDFSBackedBlockRDD to read it. It always reads from HDFS. 

Should not the tests be, 
1. write to both BM, and HDFS, read 
2. write to BM, not to HDFS, read
3. write to HDFS, not to BM, read
4. write partially to BM, other part to HDFS, read