Extensions: Expose API to traverse AST
Currently extensions maintain own code to traverse the AST in order to transform nodes.
This could be made DRYer by performing the AST traversal in the runner and exposing a method on_node
or similar that lets extensions respond to every single node in the AST.