SPARK-3711: Optimize where in clause filter queries

The In case class is replaced by a InSet class in case all the filters are literals, which uses a hashset instead of Sequence, thereby giving significant performance improvement (earlier the seq was using a worst case linear match (exists method) since expressions were assumed in the filter list) . Maximum improvement should be visible in case small percentage of large data matches the filter list.
We should also double check that there isn't a problem if a `null` is in the in list.  I'm not sure if thats actually valid SQL (and it should never change the result), but we shouldn't throw an exception.