Fix a template/type translation error
Improve ast visitor code
unify design
also translate condition variables (if, while, switch)
fix potential memory leaks (only create nodes if we know where to put
them)
Simplify ExpressionVisitor code