Changed recursive walk to iterative walk, to prevent StackOverflows.
Changed react to build a set of "ancestors" to notify of changes and only notify them of value changes once.