Use std::stringstream instead of snprintf() for double->string conversio...

...n

snprintf() will use the current locale for converting a double to a string,
which will use a ',' instead of a '.' in some locales (e.g. de_DE).
std::stringstream allows setting the locale to "C" to always get a '.'.
Hmm. I'm not sure this was a good change. `snprintf` is more efficient. You can set the locale for `snprintf` too:
* http://stackoverflow.com/questions/3457968/snprintf-simple-way-to-force-as-radix

Was this a problem only on Windows?

> (We still get "5" for 5.0, but that doesn't matter because JSON doesn't distinguish between reals and integers.)

That's not quite true. The standard definitely allows either, and technically it imposes no constraint on either length or precision. I am hoping to support long-integers someday, so I do not want to lose informatio.n