Generic template and forward in stringstream.

This CL updates the templates in the StringStream to match more types.
All of the internal `operator<<` methods have been converted over to
StringStream. The precision was increased in order to better match the
precision needed to read back as a double.

Bug: tint:1686
Change-Id: Iaa15cf247f174967dd1014647ba5a74804997c22
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/122080
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl
index d74bfda..b0029f9 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_d17fb2() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {