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

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.
This should return error instead of unwrapping? (may have been an existing bug?)