Everything has been moved to struct data

Lexer is now void function, taking a struct pointer as argument, this
helps a lot with data management, and keeps threading clean.