Initial BQSR Work

This work was contributed by Chris Hartl as part of the work he did during his time at the AMPLab. He's unable to continue contributing work to this project as he's moved on to his next challenge (and will be missed).

This code generally works but needs some polish. For example, Chris found that occasionally the memory use on one or two nodes would skyrocket and bring the Spark job down.