Allow lexemes to be pushed

We need this for the current implementation of error recovery, in places
Add more EOF checks when testing that current lexeme is *not* of a specific type

This prevents infinite looping in those cases