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 '.'.
I think so, yes. (We still get "5" for 5.0, but that doesn't matter because JSON doesn't distinguish between reals and integers.)