[SPARK-4031] Make torrent broadcast read blocks on use.

This avoids reading broadcast variables when they are referenced in the closure but not used by the code.
Note: This is a WIP and a request for comments. I will update HttpBroadcast and add some tests if it sounds good.

cc @rxin @JoshRosen for review
+1.  I've seen several cases where this type of human-friendly formatting has resulted in log messages that report things like "spilling 0 MB to disk" or "task took 0 seconds", which isn't helpful while debugging.