Small Java implementation refactoring

- Force compile checking for visitable nodes with abstract method
- Improved readability of Evaluator (inspired by the Ruby one)