[SPARK-3613] Record only average block size in MapStatus for large stages

This changes the way we send MapStatus from executors back to driver for large stages (>2000 tasks). For large stages, we no longer send one byte per block. Instead, we just send the average block size.

This makes large jobs (tens of thousands of tasks) much more reliable since the driver no longer sends huge amount of data.
I'm going to add : Unit here, but for the sake of the argument:

Yes - I actually personally followed that for a while (a lot of my code added : Unit to it). After I while, I actually found it very annoying because it happened to me multiple times that I had to line wrap because of the extra : Unit and then I stopped doing that. I absolutely don't buy the Scala style guide that not adding ": Unit" is confusing.