add: round trip numeric tests
fix: write decimal as decimal, not double
fix: add ulong support, for unsigned numbers > long.MaxValue
fix: throw exception on failed numeric parsing, safer than silently returning 0
fix: use "R" numeric format when writing double, for round-trip stability

TODO: still failing RoundTripFloatDecimal test, will check to see if it works in other branch