IRNode: IRInput | IRDerived

Tagged union over the two node variants the checker understands.

Closed by construction. IRNode is exactly IRInput | IRDerived; adding a third variant requires changing this declaration and is caught at every assertNever-guarded switch in the engine and the checker (iasbuilt/causl#359, iasbuilt/causl#368).