Factor code to rotate a canvas about a point.

SkMatrix::scale and ::rotate take a point around which to scale or rotate.
Canvas lacks these helpers, so the code to rotate a canvas around a
point has been duplicated many times. Factor all of these
implementations into SkCanvas::rotate.

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

Review-Url: https://codereview.chromium.org/2142033002
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 61f5a8a..afbe5ee 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -290,12 +290,6 @@
         return SkISize::Make(W, H*2);
     }
 
-    static void rotate(SkScalar angle, SkScalar px, SkScalar py, SkCanvas* canvas) {
-        SkMatrix matrix;
-        matrix.setRotate(angle, px, py);
-        canvas->concat(matrix);
-    }
-
     void onDraw(SkCanvas* canvas) override {
         canvas->drawColor(SK_ColorWHITE);
 
@@ -316,7 +310,7 @@
             for (int i = 0; i < N/2; i++) {
                 SkRect r;
                 rnd_rect(&r, &paint, rand);
-                rotate(SkIntToScalar(15), SW/2, SH/2, canvas);
+                canvas->rotate(SkIntToScalar(15), SW/2, SH/2);
                 canvas->drawPath(fPath, paint);
             }
         }