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.
The clean and reliable way to test that is by writing data to one of the places only (either BM, or HDFS, not both), and then try to read through the RDD using rdd.collect(). That eliminates the chance of wrong tests, and does not require test-only flags. 

In general I am not 100% opposed to having the such test-only stuff. Ultimately, what we desire is correct AND CLEAN code, which is easy and intuitive to understand. Such test-only stuff, in most cases, makes the code look more confusing.