SPARK-3968 Use parquet-mr filter2 api in spark sql

The parquet-mr project has introduced a new filter api  (https://github.com/apache/incubator-parquet-mr/pull/4), along with several fixes . It can also eliminate entire RowGroups depending on certain statistics like min/max
We can leverage that to further improve performance of queries with filters.
Also filter2 api introduces ability to create custom filters. We can create a custom filter for the optimized In clause (InSet) , so that elimination happens in the ParquetRecordReader itself 
Thanks for pointing this out, I had chosen ClientSideMetadataStrategy because it was the default one (had left the other as TODO), in fact we indeed should use  TaskSideMetadataSplitStrategy . For now I have included the code for both strategies, and made TaskSideMetadataSplitStrategy default. Should we create a config for this ?