This commit drops the flex + bison code in favor to a hand-written
lexer and a new grammar file in lemon syntax.
The change results in a much smaller binary and easier to maintain
code. Code required to build and maintain the AST has been split
off into the ast.c and ast.h files.