PARQUET-84: 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
code is a little bit long here, could we add some comment like:
"load row groups from footer and apply filter pushdown"

"load row groups from splits, and those row groups are already being filtered on the client side"

Or extract two private methods for each of the above cases. It's minor, just readability, after awhile if we revisit the code, it makes the things clearer