Update signal graph nodes in topological order.

Currently every event requires visiting every node in the signal graph. This is an experiment to use topological order in the signal graph to only visit the nodes that need to update in the right order. This approach also makes for clearer signal propagation code (without count++ in recv etc.).

This was suggested by @stevengj on shashi/React.jl#4