This replaces the texture creation/caching functions on GrContext with a GrTextureProvider interface. The goal is to pass this narrowly focused object in places that currently take a GrContext but don't need and shouldn't use its other methods. It also has an extended private interface for interacting with non-texture resource types.

Review URL: https://codereview.chromium.org/1107973004
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index c12e5e8..1d7beec 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -115,11 +115,11 @@
     builder[0] = texDesc.fOrigin;
     builder.finish();
 
-    GrTexture* texture = context->findAndRefCachedTexture(key);
+    GrTexture* texture = context->textureProvider()->findAndRefTextureByUniqueKey(key);
     if (!texture) {
-        texture = context->createTexture(texDesc, true);
+        texture = context->textureProvider()->createTexture(texDesc, true);
         if (texture) {
-            context->addResourceToCache(key, texture);
+            context->textureProvider()->assignUniqueKeyToTexture(key, texture);
         }
     }
     return texture ? texture->asRenderTarget() : NULL;