Match floating point numbers too

The old pattern only matched integers.  Scientific notation is also
supported for floating point numbers.
Recognize more numeric constants

Prolog supports binary, octal and hexadecimal constants using the common
patterns used in other languages (0b..., 0o..., 0x..., respectively).

It also uses an unusual notation for denoting single character codes.
Namely, 0'.  Because the apostrophe character is also used for quoting
atoms, this pattern must occur earlier than our quoting rules to apply
properly.