Revert "remove pathop template"

This reverts commit 521f1ed0b677b86be291a7b4866ff84564dc3a1b.

Reason for revert: msan ubsan errors

Original change's description:
> remove pathop template
> 
> Pathops used templates for curve intersection.
> Since only one template is required if curves share
> an abstract base, remove the template altogether.
> 
> This makes the code easier to read, and incidentally
> makes it slightly smaller and much faster.
> 
> This also removes debugging code specific to templates,
> and removes Simplify code which isn't covered by tests
> or fuzz.
> 
> This shaves the execution time of
> pathops_unittest -V -x from 6m to 3m23s.
> 
> R=​kjlubick@google.com
> 
> Bug: skia:
> Change-Id: I00c08210e47efed83295276ae89ad64e7ec07ade
> Reviewed-on: https://skia-review.googlesource.com/c/162021
> Commit-Queue: Cary Clark <caryclark@google.com>
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Reviewed-by: Cary Clark <caryclark@google.com>

TBR=kjlubick@google.com,caryclark@google.com,caryclark@skia.org

Change-Id: Ic5828f7affb7df96ed4ca79f037cdbcfaea24384
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/162643
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
diff --git a/src/pathops/SkPathOpsQuad.cpp b/src/pathops/SkPathOpsQuad.cpp
index af842fb..bcc894e 100644
--- a/src/pathops/SkPathOpsQuad.cpp
+++ b/src/pathops/SkPathOpsQuad.cpp
@@ -399,18 +399,22 @@
     *b -= *c;          // b =     2*B - 2*C
 }
 
-int SkTQuad::intersectRay(SkIntersections* i, const SkDLine& line) const {
-    return i->intersectRay(fQuad, line);
-}
+#if PATH_OP_COMPILE_FOR_SIZE
 
-bool SkTQuad::hullIntersects(const SkDConic& conic, bool* isLinear) const  {
-    return conic.hullIntersects(fQuad, isLinear);
-}
+    int SkTQuad::intersectRay(SkIntersections* i, const SkDLine& line) const {
+        return i->intersectRay(fQuad, line);
+    }
 
-bool SkTQuad::hullIntersects(const SkDCubic& cubic, bool* isLinear) const {
-    return cubic.hullIntersects(fQuad, isLinear);
-}
+    bool SkTQuad::hullIntersects(const SkDConic& conic, bool* isLinear) const  {
+        return conic.hullIntersects(fQuad, isLinear);
+    }
 
-void SkTQuad::setBounds(SkDRect* rect) const {
-    rect->setBounds(fQuad);
-}
+    bool SkTQuad::hullIntersects(const SkDCubic& cubic, bool* isLinear) const {
+        return cubic.hullIntersects(fQuad, isLinear);
+    }
+
+    void SkTQuad::setBounds(SkDRect* rect) const {
+        rect->setBounds(fQuad);
+    }
+
+#endif