Made lexer reentrent and modified parser to use reentrent lexer

It wasn't too difficult to make the lexer reentrent but I did have a few
issues with getting declarations right. I was including lex.yy.h in
lexer file(lisp.lex) which caused some issues then I had a few issues of
ordering of macros, but nothing too difficult to work out