Signal propagation after topological sorting

Tries to address #4 .
It made sense to keep the topological sorting logic out of Signal's structure. Besides there are many different signal types. This actually takes less code.