more AST implementations, refactorings

- implemented all math, and almost all logic expressions
- extracted binary expression class
- added base ast visitor interface
- removed unnecessary TreeNode methods