Make iteration size of nodes in graph optional.

Not all nodes in the graph represent loops in the output program -
externals and input nodes, for example. As a result, these nodes cannot
be fused with anything at all. So we set their iteration size to
Nothing, and only nodes with sizes can be fused together.
ddc-core-flow: rate: only add weight constraints when no edges.

It is not necessary to add the weight constraint
> -N(F u v) <= O v - O u <= N(F v u)
when there is an edge between u and v, as a more restrictive constraint
>  1(F u v) <= O v - O u <= N(F v u)
will be added as well.
In this case, we also needn't add the filter constraints: if a and b
have a fusible edge between them and have different but fusible types,
then the parent transducers of a and b must be (a,a) or (b,b).