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').
Add tests of async functions and await expressions.
Support async function declarations and expressions.

This support includes arrow function expressions.
Support await expressions.
Remove unreachable code to satisfy code coverage tests.

I tried to write tests that would exercise the removed
matchAsyncFuncExprOrDecl() blocks, but it didn't seem possible. I might be
wrong about that, though.