the typescript lexer only had three number rules, so literals like 0b1010, 0o17, 0XFF, 1e5 and 1_000 were split into a number and a name. this ports the javascript number rules, with the float rule also keeping a fraction and an exponent together (1.5e10) as before, and adds a testdata/typescript/number_literals fixture.