An approximation of the set of values an expression might have, including whether or not it
might be null or an error value. This is generally an overapproximation, in the sense that
ResultSpec::may_contain may return true even if the argument is not included in the set.
(However, it should never return false when the value is included!)
An interpreter that returns whether or not a particular expression is “pushdownable”.
Broadly speaking, an expression is pushdownable if the result of evaluating the expression
depends on the range of possible column values in a way that ColumnSpecs is able to reason about.