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 
Is there a reason we are using this instead of `TaskSideMetadataSplitStrategy`?  Should we at least be reflecting on the interface so that we can choose between the two?