Re-re-land "added GrSkSLFP and converted DitherEffect to use it"

This reverts commit 6c48e4d11ce80fa5cfef56e13b2d5847fe94a7cc.

Bug: skia:
Change-Id: I7ee78990fc30eec545d1856e59eb6e0573089426
Reviewed-on: https://skia-review.googlesource.com/144348
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/ir/SkSLDoStatement.h b/src/sksl/ir/SkSLDoStatement.h
index 3abec55..af0fc59 100644
--- a/src/sksl/ir/SkSLDoStatement.h
+++ b/src/sksl/ir/SkSLDoStatement.h
@@ -23,6 +23,11 @@
     , fStatement(std::move(statement))
     , fTest(std::move(test)) {}
 
+    std::unique_ptr<Statement> clone() const override {
+        return std::unique_ptr<Statement>(new DoStatement(fOffset, fStatement->clone(),
+                                                          fTest->clone()));
+    }
+
     String description() const override {
         return "do " + fStatement->description() + " while (" + fTest->description() + ");";
     }