Refactor broadcast classes
Add framework for broadcast cleanup

As of this commit, Spark does not clean up broadcast blocks.
This will be done in the next commit.
Clean up broadcast blocks through BlockManager*
Add tests for unpersisting broadcast

There is not currently a way to query the blocks on the executors,
an operation that is deceptively simple to accomplish. This commit
adds this mechanism in order to verify that blocks are in fact
persisted/unpersisted on the executors in the tests.