Signal propagation after topological sorting

Tries to address #4 .
You want something like C++'s `private` members.   Julia doesn't enforce this kind of thing at the language level: it just relies on a cultural convention that external code generally shouldn't modify struct members directly (and if it does so, it does so at its own risk).