Currently, the ReplaceNullAndNan/ReplacyInfinity query expressions validate that the replacement values have the correct type. This isn't the only requirement for those values, though: users could, in principle, pass in a NaN or infinity (which is a float, and thus the right type) as the replacement value, which currently passes validation but causes the output schema of the expression to be computed wrong. As a result, constructing the corresponding Core transformation fails.
I can't see a good reason to allow passing these values, so let's check for these values in Analytics and reject them before they get to Core.
Originally noticed in #74 (comment) -- don't start on this until that MR is merged.