Tree view is now synced with cursor location.

When the cursor is moved, the syntax tree opens and shows the
corresponding node.
Sync AST with cursor position

Instead of expanding the tree automatically, we just highlight the
corresponding node in the AST. This feels friendlier than expanding and
collapsing the tree, which adds as lot of moment.

Other changes:

- Darker highlighting color in editor
- Nodes are now rendered as list. The + and - indicators can't be used
  to toggle the node anymore.
Use React npm module instead of CDN
Use pubsub instead of global functions
Show 'undefined' instead of nothing