Remove NoYieldInGenerator warning message.

It's fine for a generator function to contain no `yield` expressions, just
as it's fine for control flow to dynamically avoid any `yield` expressions
that do appear in the generator function. Permitting no-`yield` generator
functions is one of the stated reasons for the `function*` syntax.

https://code.google.com/p/esprima/issues/detail?id=485
Treat yield as a contextual keyword.

This means, in particular, that `yield` is a perfectly valid identifier
outside the bodies of generator functions, and that it is always treated
as an operator inside the bodies of generator functions.

When we encounter an expression like `yield x` outside a generator
function, parsing fails with an "Unexpected identifier" error pointing to
the `x`, as you would expect with `whatever x`.

https://code.google.com/p/esprima/issues/detail?id=467
Refactor parseObjectProperty to simplify conditional logic.
Decompose matchYield helper function.
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.

Now that 'yield' and 'await' are contextual keywords, there is no such
thing as an illegal 'yield' or 'await' expression.

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.