Make "priv" classes for GrTexure and GrSurface.

R=robertphillips@google.com, egdaniel@google.com, joshualitt@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/596053002
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index 45cd599..366fba9 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -1082,7 +1082,7 @@
  * Gets and locks a scratch texture from a descriptor using either exact or approximate criteria.
  * Unlocks texture in the destructor.
  */
-class GrAutoScratchTexture : public ::SkNoncopyable {
+class SK_API GrAutoScratchTexture : public ::SkNoncopyable {
 public:
     GrAutoScratchTexture()
         : fContext(NULL)
@@ -1121,24 +1121,7 @@
      * Note that the caller is assumed to accept and manage the ref to the
      * returned texture.
      */
-    GrTexture* detach() {
-        if (NULL == fTexture) {
-            return NULL;
-        }
-        GrTexture* texture = fTexture;
-        fTexture = NULL;
-
-        // This GrAutoScratchTexture has a ref from lockAndRefScratchTexture, which we give up now.
-        // The cache also has a ref which we are lending to the caller of detach(). When the caller
-        // lets go of the ref and the ref count goes to 0 internal_dispose will see this flag is
-        // set and re-ref the texture, thereby restoring the cache's ref.
-        SkASSERT(!texture->unique());
-        texture->impl()->setFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit);
-        texture->unref();
-        SkASSERT(texture->getCacheEntry());
-
-        return texture;
-    }
+    GrTexture* detach();
 
     GrTexture* set(GrContext* context,
                    const GrTextureDesc& desc,