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

all this produces the following visualization:

1. name of named trees
2. id un-named of tree
3. self time of each tree

![graph](https://cloud.githubusercontent.com/assets/1377/5318091/1c40b836-7c6b-11e4-8864-cecd1d06c5b7.png)