Correctly lex keywords

Keywords are now lexed using backtracking. For example, the keyword
'public' no longer raises an error 'expected "params"'.