[SPARK-2521] Broadcast RDD object once per TaskSet (instead of sending it for every task).

This should substantially reduces task size for large jobs (with large closures). It should improve task dispatching and scheduler throughput.

Once this is committed, we can also remove the JobConf broadcast in HadoopRDD.

TODO:
- [ ] Log broadcast size


Can we get the type here?