Optimize the visitor by only caring about identifiers when inside an arrow expression
Merge branch 'optimize-with-a-split-visitor'
Use a more typical OO setup with subclassing.
Refer to the types as they are defined in ast-types.
v0.6.3
visitors are meant to be re-used

* share visitor instance
* extract visitors to visitor.js