Add specs for StateChange.undo()
Add state.watch()
Use state.change for depTree.disconnect and toRoot
Pass oldVal and newVal to state watchers

Works more like angular regular $watch this way. The event itself is
passed as a third argument.
Refactor uTH to use the new and mighty state.watch()