Refactor + Hooks to support Visualizing the tree nodes.

* formalize Node into a first class entity
* extract and name large callbacks in then chains
* remove semi-colon
* rename self -> builder so it is clear when reading
* RSVP.resolve -> Promise.resolve
* upgrade RSVP