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
* add scripts/graph.js which converts the broccoli-tree.json into dot for graphviz to consume