Add AnyArgs and AllArgs objects

These remain unevaluated on free predicates, and evaluate on applied
predicates, vectorizing over the args of the applied expression.

This should make it possible to represent facts like "a multiplication is zero
iff any of its terms is zero". We can represent this as Equivalent(Q.zero,
AnyArgs(Q.zero)), and use .rcall to generate the specific fact using Or() on a
specific instance of Mul.

The chief disadvantage of this idea is that the fact that the fact relates to
the Mul class is not stored explicitly in the fact itself, but only separately
in the handler registry.