(#11331) Fix broken errors/bad message for bad numeric tokens

There was a problem with asserting numeric input. The expected method
'assert_numeric' was not implemented where expected, and there was no
test covering this bad numeric input.

Now there is a test, and the issues are fixed.

Note, it is almost impossible to enter an invalid decimal number since
it is either going to be recognized in part as a valid number or not at
all being a number. The error will be about something else instead.

Hence no test for bad decimal from lexer.