[SPARK-2521] Broadcast RDD object (instead of sending it along with 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
- [ ] Unit tests?


But the byte array isn't compressed. That's probably okay but it could also be a slight regression compared to the current task caches.