Fix for out-of-bounds intersection (found by fuzzer).

Sometimes, the intersection returned by check_intersection() is
out-of-bounds for both edges (above both tops or below both bottoms)
due to floating-point inaccuracy. This causes split_edge() to create a
tiny negative-length edge on one side (which would then assert).
Although we could safely remove this assert and allow the negative
length edge to be removed, it's faster/safer to simply avoid its
creation in the first place by adjusting one edge to the other edge's
endpoint.

Added a new unit test to exercise this case.

Review URL: https://codereview.chromium.org/968993002
diff --git a/tests/TessellatingPathRendererTests.cpp b/tests/TessellatingPathRendererTests.cpp
index 1625bf2..0635e7f 100644
--- a/tests/TessellatingPathRendererTests.cpp
+++ b/tests/TessellatingPathRendererTests.cpp
@@ -220,6 +220,16 @@
     return path;
 }
 
+static SkPath create_path_15() {
+    SkPath path;
+    path.moveTo(    0.0f,   0.0f);
+    path.lineTo(10000.0f,   0.0f);
+    path.lineTo(    0.0f,  -1.0f);
+    path.lineTo(10000.0f,   0.000001f);
+    path.lineTo(    0.0f, -30.0f);
+    return path;
+}
+
 static void test_path(GrDrawTarget* dt, GrRenderTarget* rt, const SkPath& path) {
     GrTessellatingPathRenderer tess;
     GrPipelineBuilder pipelineBuilder;
@@ -259,5 +269,6 @@
     test_path(dt, rt, create_path_12());
     test_path(dt, rt, create_path_13());
     test_path(dt, rt, create_path_14());
+    test_path(dt, rt, create_path_15());
 }
 #endif