[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.
Right, procedure syntax is now officially frowned upon in the Scala style guide, but we haven't formally adopted that position in the Spark style guide -- but we probably should.