Recognize materialized views that contain Filter. To do this, I've added algorithms that split predicates such as "x = 1 and y = 2" to the parts that are and are not handled by the underlying predicate "y = 2".

Remove some crud from SubstitutionVisitor.