Moved keyword handling from parser to lexer
Actually, having it in parser, also caused tokenizer and highlighter to return the keyword tokens instead of a T_STRING token which might confuse parsers (and lead this way to a BC break)
Also this way we do not need to maintain a fixed list in parser which needs to be updated on every addition/modification of keywords
Furthermore it allows more control over tokens before they are passed to parser (for future features...)