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 
`.getOrElse(sys.error(s"Failed to reflectively invoke ClientSideMetadataSplitStrategy.generateSplits")` instead of `get`