Remove GrStencilSettings from GrPipeline

Updates the GrPipeline to have user stencil settings instead of actual
settings. This allows us to further defer creating and attaching a
stencil buffer.

This change is a partial step. The ultimate goal is to attach the
stencil buffer and create the stencil settings during render target
flush, but for the sake of keeping this CL smaller, we create the
stencil settings right before use for now.

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

Review-Url: https://codereview.chromium.org/2468653002
diff --git a/src/gpu/GrUserStencilSettings.h b/src/gpu/GrUserStencilSettings.h
index 1800259..3cbadfd 100644
--- a/src/gpu/GrUserStencilSettings.h
+++ b/src/gpu/GrUserStencilSettings.h
@@ -182,6 +182,22 @@
     GrUserStencilSettings() = delete;
     GrUserStencilSettings(const GrUserStencilSettings&) = delete;
 
+    uint16_t flags(bool hasStencilClip) const {
+        return fFrontFlags[hasStencilClip] & fBackFlags[hasStencilClip];
+    }
+    bool isDisabled(bool hasStencilClip) const {
+        return this->flags(hasStencilClip) & kDisabled_StencilFlag;
+    }
+    bool doesWrite(bool hasStencilClip) const {
+        return !(this->flags(hasStencilClip) & kNoModifyStencil_StencilFlag);
+    }
+    bool isTwoSided(bool hasStencilClip) const {
+        return !(this->flags(hasStencilClip) & kSingleSided_StencilFlag);
+    }
+    bool usesWrapOp(bool hasStencilClip) const {
+        return !(this->flags(hasStencilClip) & kNoWrapOps_StencilFlag);
+    }
+
     const uint16_t   fFrontFlags[2]; // frontFlagsForDraw = fFrontFlags[hasStencilClip].
     const Face       fFront;
     const uint16_t   fBackFlags[2]; // backFlagsForDraw = fBackFlags[hasStencilClip].