CCEffectRenderer refactor - Remove multiple render pass support from CCRenderTexture.

As we move to CCEffectRenderer which is shared by CCSprite and CCEffectNode, we need to
move render pass management in there. This mean the intermediate texture / FBO array needs
to come out of CCRenderTexture since it needs to go where the passes go.

This change temporarily make CCEffectNode function just like CCRenderTexture by disabling
the execution of the render passes (because they have no textures to store intermediate results).
CCEffectRenderer refactor - Initial implementation of CCEffectRenderer

This moves the main effect render loop from CCEffectNode into CCEffectRenderer. Management
of the FBOs and textures for each render pass is also moved into the renderer. We're currently
leaking FBOs and textures with each draw but that will be fixed next (or at least very soon if not
next).
CCEffectRenderer refactor - Fix initialization of cc_PreviousPassTexture uniform

If there is a previous pass render target, use the texture from that. Otherwise just use
the sprite's original texture. This logic needs cleanup to make it more obvious what's
happening but it gets CCEffectNode working again so I'm checking it in as-is for now.
CCEffectRenderer refactor - Fix initialization of cc_MainTexture

I would like for this fix to be temporary but for now it gets the glow effect working again. Because
of the way we manipulate CCEffectNode's sprite (the internal one, not the one that the effect is
being applied to) I was tripping over some interactions between dirtiness testing, sprite.texture,
and the cc_MainTexture uniform. An issue like this has come up at least once before and this
fix also just feels like a band-aid so I'd like to address it differently (i.e. better) in the future.
CCEffectRenderer refactor - Fix FBO / texture leaking

This temporarily sets us back to the "destroy all and recreate" paradigm. That needs to be
fixed but for the time being this prevents us getting killed when we run out of memory.
CCEffectRenderer refactor - Support size changes in CCEffectNode

Initially the renderer's size could only be set via initWithWidth:height. This did not allow for
CCEffectNode's with sizes that change after initialization.
CCEffectRenderer refactor - Fix render target sizing

I was using the content size and not the pixel size when setting the size of the intermediate render targets
in CCEffectRenderer. This was a change from the previous implementation and resulted in visual differences.
Fix pong test

I fixed an anchor point bug with CCEffectNode a couple days ago but I didn't update a workaround for
the bug in the pong test at the same time. Removing the workaround now that the bug is gone. This
fixes pong test.
CCEffectRenderer refactor - Handle effect nodes with no effects

If there are no effects, set the output sprite's texture to the input texture.
CCEffectRenderer refactor - Fix debug labels to reference CCEffectRenderer and not CCEffectNode
CCEffectRenderer refactor - Render target allocation / destruction

Move all GL resource allocation and destruction into CCEffectRenderTarget methods. CCEffectRenderer
just calls these.
Fix clear of effect passes

The use of uninitialized GLKVector4 structs for the clear color was causing undefined
behavior on 64 bit builds (at least on the iOS simulator, did not test on a 64 bit device).
Changed to using [CCColor clearColor] which seems more cocos correct anyway.
CCEffectRenderer refactor - First pass at render target reuse

Render targets can now be released for reuse by subsequent passes without destroying them. For
now the renderer only releases render targets at the beginning of drawing but the goal is for them to
be released during drawing when they are no longer needed by subsequent passes.
CCEffectRenderer refactor - Guard the renderer with CC_ENABLE_EXPERIMENTAL_EFFECTS
CCEffectRenderer refactor - Remove CCSprite from CCEffectRenderPass

Instead, keep track of the relevant components of CCSprite (blend mode, shader, shader uniforms,
vertices, etc) in CCEffectRenderPass and directly enqueue triangles on the renderer. This change is
foundational for applying effects directly to sprites without CCEffectNode.
First pass at CCEffects applied directly to CCSprites

Sprite contains an effect renderer that renders to a temporary texture which is then applied
to the sprite during the final compositing render pass. There is a big hack here in which a
temporary effect stack is allocated during each draw to be passed to the renderer. This will
go away once CCEffectStack is itself a subclass of CCEffect (kind of like the relationship
between CCAction and CCActionSequence).
CCEffectRenderer cleanup - Move render target bind and restore into methods
Initial commit of CCEffect direct rendering

If we're executing the last pass of the last effect then don't draw to an
FBO. Instead draw to whichever framebuffer was bound at the start of rendering
(this should be the displayable frame buffer under most circumstances but I
 need to test interaction with CCRenderTexture). This avoids one FBO allocation,
an FBO binding change, and the post-render composite pass.
CCEffect direct rendering - Change grouping of the lastPass / !lastPass logic

There used to be a few conditional spots based on lastPass but it's clearer to me if there
is just one. It does result in a bit of duplicated code but I think the result is a net positive.
CCEffect direct rendering - Make direct rendering support conditional upon CCEffectStack

If CCEffectStack says direct rendering is supported and it's the last pass then we get direct rendering.