Simplify SubRun structure in GrTextBlob

* Remove Run.
* Have SubRun handle both mask and path data.
* Collect up runs of glyph with the same format to
  simplify building SubRuns.

The nexus of this change is GrTextBlob::makeSubRun. All the
invariants for a SubRun are set in this code, and those
invariants stem from the SubRunType. Much of the code has been
simplified by not having to maintain complicated invariant
state between adding glyphs.

The change that reduces the most number of problems with the
old code is having SubRun own its SkStrikeSpec. Having bulk
glyph insertion facilitated this.

Change-Id: I2439392a9ee3485e7b07a1f3fdaf1351128c4d47
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255309
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index 8a2dfbb..d425b71 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -122,12 +122,11 @@
     SkString str;
 
     for (int i = 0; i < fGeoCount; ++i) {
-        str.appendf("%d: Color: 0x%08x Trans: %.2f,%.2f Runs: %d\n",
+        str.appendf("%d: Color: 0x%08x Trans: %.2f,%.2f\n",
                     i,
                     fGeoData[i].fColor.toBytes_RGBA(),
                     fGeoData[i].fX,
-                    fGeoData[i].fY,
-                    fGeoData[i].fBlob->runCountLimit());
+                    fGeoData[i].fY);
     }
 
     str += fProcessors.dumpProcessors();