Adds a rewrite directive OpWithResultTypeBuilders that allows
operations to be created in rewrites that are not able to infer or
deduce a return type. Types can be specified with a string:
(OpWithResultType<AnOp, "IntegerType::get(getContext(), 32)"> $val)
Or can be built using NativeCodeCall:
(OpWithResultTypeBuilder<AnOp, (NativeCodeCall<"$0.getType()"> $arg)> $val)
Do you think if we put this in DagNode class will be better?