All child GrFragmentProcs' transforms and textures will be stored in the root GrFragmentProc in preorder

Changed childProcessor(i) to return const referencd

Fixed rootProc/parentProc offset issues; renamed a few things.

added nonempty check to gatherTransforms to avoid segfault

removed recursive append_gr_coord_transforms() from GrGLProgramBuilder

BUILDS! Changed num*includeProc() calls to num() calls

added gatherCoordTransforms(). added coordTransforms() for root proc only

Modified GrFragmentProcessor to append child proc transforms and textures to root proc's arrays.

BUG=skia:4182

Review URL: https://codereview.chromium.org/1275853005
diff --git a/src/gpu/GrProcessor.cpp b/src/gpu/GrProcessor.cpp
index b990f9b..6cc2a20 100644
--- a/src/gpu/GrProcessor.cpp
+++ b/src/gpu/GrProcessor.cpp
@@ -135,17 +135,34 @@
     SkDEBUGCODE(transform->setInProcessor();)
 }
 
-void GrFragmentProcessor::registerChildProcessor(GrFragmentProcessor* child) {
-    fChildProcessors.push_back(child);
+int GrFragmentProcessor::registerChildProcessor(const GrFragmentProcessor* child) {
+    // Append the child's transforms to our transforms array and the child's textures array to our
+    // textures array
+    if (!child->fCoordTransforms.empty()) {
+        fCoordTransforms.push_back_n(child->fCoordTransforms.count(),
+                                     child->fCoordTransforms.begin());
+    }
+    if (!child->fTextureAccesses.empty()) {
+        fTextureAccesses.push_back_n(child->fTextureAccesses.count(),
+                                     child->fTextureAccesses.begin());
+    }
+
+    int index = fChildProcessors.count();
+    fChildProcessors.push_back(GrFragmentStage(child));
+
+    if (child->willReadFragmentPosition())
+        this->setWillReadFragmentPosition();
+
+    return index;
 }
 
 bool GrFragmentProcessor::hasSameTransforms(const GrFragmentProcessor& that) const {
-    if (fCoordTransforms.count() != that.fCoordTransforms.count()) {
+    if (this->numTransforms() != that.numTransforms()) {
         return false;
     }
-    int count = fCoordTransforms.count();
+    int count = this->numTransforms();
     for (int i = 0; i < count; ++i) {
-        if (*fCoordTransforms[i] != *that.fCoordTransforms[i]) {
+        if (this->coordTransform(i) != that.coordTransform(i)) {
             return false;
         }
     }