[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.
`LargeMapStatus` sounds like the map status itself is large, but really this is a small map status right? How about something like `AverageSizeMapStatus` or whatever better name you can come up with?