Use a whitelist based on `nud` instead of a blacklist.

Anything with `nud` should return a value from `expression(10)`.
Mozilla requires parens around `yield` in the condition of a ternary.

This is a little tricky:

```js
function f() {
  // okay because it actually parses as
  // yield (a ? b : c);
  yield a ? b : c;
  // needs paren
  yield ? b : c;
  // okay
  a ? yield : yield;
  // needs paren for the second `yield`
  a ? yield : yield ? yield : yield;
}
```
A lone colon means end of the (inner) expression.

I might be able to use `token.reach` here.
Reformat conditionals in `prefix("yield", ...)`.
Organize and extend "test 'yield' in compound expressions".

- Don't test line-breaking here. It confuses the issue.
Warn about line breaks following `yield`.
Use `.value` instead of `.id` for warnings in `nobreaknonadjacent`.

This prevents getting warnings referring to "(number)" instead of "42".
Add test for line breaks with `yield`.