This is not a new semantic feature. The syntax (? 1, 2, 3) was
disallowed by the parser in a dag expression, but there were
already ways to sneak a ? into the operator field of a dag
value, e.g. by initializing it from a class template parameter
which is then set to ? by the instantiating def.
This patch makes ? in the operator slot syntactically legal, so it's
now easy to construct dags with an unset operator. Also, the semantics
of !con are relaxed so that it will allow a combination of set and
unset operator fields in the dag nodes it's concatenating, with the
restriction that all the operators that are not unset still have
to agree with each other.