Remove IllegalYield error and decompose matchYield helper function.

Outside of generator functions, 'yield' is now treated as a normal
identifier, so there is no longer such a thing as an illegal 'yield'
expression, per se. Now, the failure mode is that a 'yield' token might
not be parseable as an identifier (as in 'yield x').
Support async function declarations/expressions and await expressions.

This includes support for async arrow function expressions.
Add tests of async functions and await expressions.