[SVGDom] Initial linear gradient support

Kind of a big change, to connect several new bits into something useful:

  * ID tracking & lookup
  * new asPaint() node virtual to support shader (and in the future filter) based paint servers
  * <defs>, <linearGradient> and <stop> element support
  * 'href', 'offset', 'stop-color', 'stop-opacity' attribute support
  * IRI/FuncIRI and rgb(...) parsing

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2327233003

Review-Url: https://codereview.chromium.org/2327233003
diff --git a/BUILD.gn b/BUILD.gn
index 20f8d84..7b506e4 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -731,6 +731,7 @@
       "experimental/svg/model/SkSVGDOM.cpp",
       "experimental/svg/model/SkSVGEllipse.cpp",
       "experimental/svg/model/SkSVGLine.cpp",
+      "experimental/svg/model/SkSVGLinearGradient.cpp",
       "experimental/svg/model/SkSVGNode.cpp",
       "experimental/svg/model/SkSVGPath.cpp",
       "experimental/svg/model/SkSVGPoly.cpp",
@@ -738,6 +739,7 @@
       "experimental/svg/model/SkSVGRenderContext.cpp",
       "experimental/svg/model/SkSVGSVG.cpp",
       "experimental/svg/model/SkSVGShape.cpp",
+      "experimental/svg/model/SkSVGStop.cpp",
       "experimental/svg/model/SkSVGTransformableNode.cpp",
       "experimental/svg/model/SkSVGValue.cpp",
     ]