reorganize some logic

make listener invocation more consistent
move string to null conversion out of listener and into binder
improve the handling of GroovyStrings
remove doBind