Signal propagation after topological sorting

Tries to address #4 .
The code saving is only the saving of adding a `rank` field to each `Signal` type.  But the result is slower and, I think, more awkward.