Throw invalid_argument when non-finite float value is given

Only finite float values are valid in JSON. If `json_float` has inf or nan, it create an invalid json string.
I have a question. I think this code throws the same exception, but doesn't use `cast`. Is it Okay?
```
json js(new json_float(0.0 / 0.0));
```