visitors are meant to be re-used

* share visitor instance
* extract visitors to visitor.js
Merge branch 'reuse-visitors'

* reuse-visitors:
  visitors are meant to be re-used
v0.6.4