Parse heredocs with code following the <<identifier

In the process, created an interface for the lexer so that we could
quickly make a lexer that doesn't actually emit tokens, since it's extremely
convenient to lex the tokens following the heredoc identifier, hold onto them,
lex the heredoc, and then emit the tokens that we were holding onto.
Change how unary and binary + is parsed

It didn't feel necessary to have such ambiguity between these two
symbols, after some thought. Since we can tell which of the two
possible types we actually have at any point in a ruby script

........(actually, I did not verify that, but it seems true)......

it seems safe to parse + as unary only when it is preceded by something
that cannot be the target of a binary + operator.
Improve parsing of unary, binary -