Avoid reading rowgroup metadata in memory on the client side.

This will improve reading big datasets with a large schema (thousands of columns)
Instead rowgroup metadata can be read in the tasks where each tasks reads only the metadata of the file it's reading
Since the length of a ParquetInputSplit will always be endOffest -startOffset, why do we need pass the length here?

ParquetInputSplit could just take the startOffset and endOffset and figure out the length by itself.