Add support to both explicitly and automatically clean-up broadcast

Building on top of [#543](https://github.com/apache/incubator-spark/pull/543/), this PR integrates the functionality to unpersist a broadcast with the cleaning up of variables when they are no longer strongly reachable.

The tests added in BroadcastSuite involve a broader change than usual. In particular, the current BlockManager interface had no proper mechanism of querying blocks that were not reported to the master, and this PR provides this.