extra isexpr utils
add end-less switch form
add definition test
implement efficient tail calls
use rec macro for reduce, fixes #8