Add a GrPathRange class

Adds a GrPathRange object that represents a range of paths on the gpu.
Updates GrDrawTarget::drawPaths and supporting code to use GrPathRange
instead of an array of GrPath objects.

Change-Id: I67845f3893cd4d955db947d699aa3733cbb081e0

BUG=skia:
R=bsalomon@google.com, jvanverth@google.com, kkinnunen@nvidia.com

Author: cdalton@nvidia.com

Review URL: https://codereview.chromium.org/400713003
diff --git a/src/gpu/GrPath.h b/src/gpu/GrPath.h
index d324e6a..2c0040c 100644
--- a/src/gpu/GrPath.h
+++ b/src/gpu/GrPath.h
@@ -18,6 +18,9 @@
 public:
     SK_DECLARE_INST_COUNT(GrPath);
 
+    /**
+     * Initialize to a path with a fixed stroke. Stroke must not be hairline.
+     */
     GrPath(GrGpu* gpu, bool isWrapped, const SkPath& skPath, const SkStrokeRec& stroke)
         : INHERITED(gpu, isWrapped),
           fSkPath(skPath),
@@ -26,6 +29,7 @@
     }
 
     static GrResourceKey ComputeKey(const SkPath& path, const SkStrokeRec& stroke);
+    static uint64_t ComputeStrokeKey(const SkStrokeRec&);
 
     bool isEqualTo(const SkPath& path, const SkStrokeRec& stroke) {
         return fSkPath == path && fStroke == stroke;