Remove null return from token poll in parser

Polling the parser for the next token was returning null when there were
no more tokens to produce, which produced unhelpful errors when the
input unexpectedly ended. Now the parser always produces an 'end of
input' token once the input has ended.