Compiler warning when casting 32 bit unsigned integer to signed

For various reasons, the lexer has been silently returning integer
literals in the 0x80000000-0xffffffff range as negative signed
integers, rather than real numbers, which would have seemed more
correct.

Realizing that this is a can of worms, I've decided to just leave
it as is for now, adding a compiler warning when it happens.

Closes #22.