Decrement SkCanvas::fDeferredSaveCount in doSave()

We're currently decrementing early in checkForDeferredSave(), but that
means we break the getSaveCount() invariant during willSave() dispatch.

Instead, we can defer to doSave(), until after willSave() is called.
This allows overriders to call getSaveCount().

R=reed@google.com,robertphillips@google.com

Review URL: https://codereview.chromium.org/1113603002
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 0bd9eb3..514a454 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -801,7 +801,6 @@
 
 void SkCanvas::checkForDeferredSave() {
     if (fMCRec->fDeferredSaveCount > 0) {
-        fMCRec->fDeferredSaveCount -= 1;
         this->doSave();
     }
 }
@@ -830,6 +829,9 @@
 
 void SkCanvas::doSave() {
     this->willSave();
+
+    SkASSERT(fMCRec->fDeferredSaveCount > 0);
+    fMCRec->fDeferredSaveCount -= 1;
     this->internalSave();
 }