dev.numericalrange - unit tests and fixes for int and float types of various sizes

Added unit tests that round trip number to json and back again, then confirm that the results match. This pointed out a bunch of issues in the handling of very large and very small numbers, which have now been addressed.

One outstanding issue is that decimal numbers do not round-trip correctly, because they are converted to double by the reader. This is awkward because the whole point of the decimal format is repeatable precision with no round-off issues. For now the unit test is hacked to use a loose comparison of decimals, which isn't really appropriate, but at least everything turns green.
Round-tripping seems like the most important feature of any serialization system, so I'm surprised there weren't more unit tests like this in the first place.