implemented support for GROUP BY and HAVING clauses
this also includes a refactor of AST to support the visitor pattern