[perl #117535, #76910] Fix bogus ambiguity warnings

‘Ambiguous use of * resolved as operator *’: This message can occur in
cases where there is no multiplication operator, so what it is saying
is completely wrong.

When the lexer parses a bareword, it looks at the previous character
and warns if it happens to match /[*%&]/, so foo**bar and foo&&bar
result in this warning, as does print $%foo.

The purpose of the code is to catch *bar *bar or &black &sheep.

To avoid false positives, when emitting one of the three operators
* % & the lexer can record that fact, so when it sees a bareword pre-
ceded by one of those three characters, instead of guessing that the
infix operator was used, it will *know*.

The test cases added also trigger ‘Bareword found where operator
expected’.  I don’t know whether that should change, but at least the
current behaviour is tested, so we will know when it does change.