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 is O(n*log(n)) in the worst case, compared to O(n) but I expect this will be faster in most cases with multiple Input nodes. I tried it out on most examples in on elm-lang.org, it works. I couldn't think of a reason why this would behave any differently.

This was suggested by @stevengj on shashi/React.jl#4