Negative numbers with Prefix

Currently the code can parse numbers like -42 and 0x3c, but not -0x2a. This is due to using starts_with rather than more complicated checks.