fix for extremes of numeric ranges

Min/MaxValue now round trip successfully for 16, 32 and 64-bit signed
and unsigned numeric types. Failure to parse a number now throws an
exception instead of silently failing with a 0 result.
unit tests for numeric ranges

(Should have been in previous commit.)