simplify invocation to listener
rename listener -> visitor
add actual NodeStateListener

The previously named class of that name was really a visitor, and the
last commit renamed it as such. Now we have an actual visistor, with two
usages.