serialize: add json::{Integer,Floating} to parse large integers properly

[breaking-change]
serialize: add json bounds checks, support for u64s, and tests
Don't fail if an object is keyed with a string and we're expecting a number
auto merge of #16201 : erickt/rust/json-ints, r=acrichto

This patch allows json to deserialize integers larger than 2^53 without losing precision. It does this by first keeping the integer portion of a number as a `i64`, and only casting it over to a `f64` if we have a decimal or exponent.