Move SkSLSampleMatrix to include/private

Switch it to use std::string (not SkSL::String). Along these lines,
remove SkSL::String's operator SkString, and instead add an explicit
SkString constructor from std::string.

Other changes aren't strictly necessary, but I wanted to clean up some
of the other SkSL vs. Skia code barriers. VS (since 2015) has had
vsnprintf that conforms to the C99 standard, the only difference with
_vsnprintf is a different (nonstandard) return value for overflowing
calls. Remove the special-case (the only use of SKSL_BUILD_FOR_WIN).

Change-Id: I8826af10c8e78a8d935c601d00b8ae9ba0640041
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298816
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/glsl/GrGLSLGeometryProcessor.cpp b/src/gpu/glsl/GrGLSLGeometryProcessor.cpp
index b774b18..1444c0c 100644
--- a/src/gpu/glsl/GrGLSLGeometryProcessor.cpp
+++ b/src/gpu/glsl/GrGLSLGeometryProcessor.cpp
@@ -255,7 +255,7 @@
                     // The FP knows the matrix expression it's sampled with, but its parent defined
                     // the uniform (when the expression is not a constant).
                     GrShaderVar uniform = uniformHandler->liftUniformToVertexShader(
-                            *base->parent(), base->sampleMatrix().fExpression);
+                            *base->parent(), SkString(base->sampleMatrix().fExpression));
 
                     // Accumulate the base matrix expression as a preConcat
                     SkString matrix;
@@ -264,7 +264,7 @@
                         matrix = uniform.getName();
                     } else {
                         // No uniform found, so presumably this is a constant
-                        matrix = base->sampleMatrix().fExpression;
+                        matrix = SkString(base->sampleMatrix().fExpression);
                     }
 
                     if (!transformExpression.isEmpty()) {