- fix bug in parsing negative real numbers with leading whitespace
- handle numbers with large exponent correctly: use bignum operations instead of floating-point, to avoid losing precision
- better detection of invalid numbers: signal INVALID-NUMBER instead of implementation-specific conditions