[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
Hmm -- thanks for the clarification. I've kept the `tryOrIOException` for now as `getValue` hasn't thrown exceptions so far and we are introducing new behavior. We can revisit this at some point if it makes stack traces harder to read.