Handle UINodes being moved around the Effen tree.
Handle UINodes being moved around the Effen tree.

Changes:
- Remove all the old tracing logic since that was a lot of code for
  just random printf debugging and nobody seems to use it
- Convert "defunct", a permanent state transition, to "mounted", a
  state that can be entered and exitted arbitrarily
- Coallesce mount/unmount notifications so there's only one per frame
- Remove handleRemoved() since we don't use it
- Rename a local variable 'parent' to 'ancestor' to avoid shadowing
  the field
- Replace uses of forEach() with for-in

Effects:
- Reusing a node provided to a constructor in a new place in a tree
  (especially at a different depth) no longer fails (it used to fail
  because the node would be marked defunct then remounted later, at
  which point it would fail)

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1169673002

jianglu/mojo,jianglu/mojo,jianglu/mojo,jianglu/mojo,chinmaygarde/mojo,afandria/mojo,afandria/mojo,afandria/mojo,jianglu/mojo,afandria/mojo,chinmaygarde/mojo,chinmaygarde/mojo,chinmaygarde/mojo,chinmaygarde/mojo,chinmaygarde/mojo,chinmaygarde/mojo,jianglu/mojo,afandria/mojo,chinmaygarde/mojo,afandria/mojo,jianglu/mojo,afandria/mojo,chinmaygarde/mojo,jianglu/mojo,afandria/mojo