Binary and unknown base numbers with invalid digits

Instead of immediately ending a binary number when a a digit besides 0
or 1 is found, lex runs of 0 and 1 as VALID_BINARY_DIGITS and all other
digits in [A-Za-z2-9]+ as INVALID_BINARY_DIGITS, which allows for
parsing the invalid binary number in the pygment example without
breaking the parsing of the rest of the file.  unknownBaseNumber extends
this error handling to the base-specifier, so if an alphabetical
character besides b, x, or o is given after 0, then that is parsed as an
unknownBaseNumber.  All alphanumeric characters are considered
INVALID_UNKNOWN_BASE_DIGITS.
Failing NoDigits BinaryNumber test case
Recovery for binaryNumber

If only `0b` is given with not digits, then binaryNumber will still
match and show errors, but not break parsing the rest of the file.
Failing No Digits Unknown Base Integer test case
Recovery for unknownBaseNumber

If only `0<alpha>` is given with no digits, then unknownBaseNumber will
still match and show errors, but not break parsing the rest of the file.
Detect obsolete binary base 'B' as binaryNumber

Lex `B` as `OBSOLETE_BINARY_INTEGER_BASE`.  Add
`OBSOLETE_BINARY_INTEGER_BASE` as a valid base in `binaryNumber` parser
rule.
Test binaryNumber with OBSOLETE_BINARY_INTEGER_BASE
Hexadecimal numbers with invalid digits

Instead of immediately ending a hexadecimal number when a digit outside
of [A-Fa-f0-9] is encountered, lex [G-Zg-z]+ as
INVALID_HEXADECIMAL_DIGITS and [A-Fa-f0-9]+ as VALID_HEXADECIMAL_DIGITS.
In the parser, similar to binaryNumber, hexadecimalNumber is composed of
BASE_INTEGER_PREFIX HEXADECIMAL_INTEGER_BASE
(INVALID_HEXADECIMAL_DIGITS | VALID_HEXADECIMAL_DIGITS)+.
hexadecimalNumber recovery

Pin HEXADECIMAL_INTEGER_BASE so a hexadecimalNumber with no digits will
recovery and not break parsing for the rest of the file.
Detect obsolete hexadecimal base 'X' as hexadecimalNumber

Lex `X` as `OBSOLETE_HEXADECIMAL_INTEGER_BASE`. Add
`OBSOLETE_HEXADECIMAL_INTEGER_BASE` as a valid base in `hexadecimalNumber`
parser rule.
 Octal numbers with invalid digits

Instead of immediately ending an octal number when a digit outside of [0-7] is
encountered, lex [8-9A-Za-z]+ as INVALID_OCTAL_DIGITS and [0-7]+ as
VALID_OCTAL_DIGITS.  In the parser, similar to binaryNumber, octalNumber is
composed of BASE_INTEGER_PREFIX OCTAL_INTEGER_BASE
(INVALID_OCTAL_DIGITS | VALID_OCTAL_DIGITS)+.
octalNumber recovery

Pin OCTAL_INTEGER_BASE so a octalNumber with no digits will recovery and not
break parsing for the rest of the file.
Allow invalid digits in decimal integers

Allow invalid digits, [A-Fa-f]+, in decimal integers.  [0-9]+ is lexed
as VALID_DECIMAL_DIGITS, while [A-Fa-f]+ is lexed as
INVALID_DECIMAL_DIGITS.  '_' is lexed as DECIMAL_SEPARATOR and can go
between valid or invalid decimal digits.  The only restrictions on
decimalNumber is that it must start with a VALID_DECIMAL_DIGITS and if
the first digit is a 0 the second can't be an invalid decimal digit or
that will trigger BASE_INTEGER_BASE as the invalid decimal digit, a
letter, will be interrupted as either a known or unknown base specifier.
Rename integer, number to whole number

Rename tokens with INTEGER in their name to WHOLE_NUMBER as they don't
include signs.  Rename Number rules to WholeNumber for the same reason.
Use decimalWholeNumber in decimal floats

Remove the DECIMAL_FLOAT token and instead make it a rule so that the
INVALID_DECIMAL_DIGITS allowed in decimalWholeNumber can be used for
decimal floats by using the decimalWholeNumber rule in a new
decimalFloat rule that emulates the token's old regex.
Add thorough number highlighting

Instead of one attribute for all numbers, have an attribute for valid
digits; decimal exponent, mark, and separator; invalid digits; base
prefixes; and obsolete base prefixes.
Update Color Settings Screenshot

To show new attributes for numbers.
Add new number features to README
Land #73, Recovery for invalid numbers
Update changelogs