CCEffects - Simplify the CCEffectImpl initialization flow

Prior to these changes, an effect subclass called one of several initializers on CCEffectImpl of the
form:

initWithArg:arg
initWithArg:arg blarg:blarg
initWithArg:arg blarg:blarg flarg:flarg

Which all chained to the designated initializer (in this example, initWithArg: blarg: flarg:). The designated
initializer then did the following:

if (!arg) [self buildArg];
if (!blarg) [selfBuildBlarg];
if (!flarg) [selfBuildFlarg];

And subclasses could opt to override these builder methods. Instead of this sub-class calling
the super-class and the super-class calling back to the sub-class arrangement, remove all but
the designated super-class initializer and require sub-classes to use it. Also remove the overridable
builder methods from the super-class so the sub-class must supply all required initializer arguments
instead of not supplying them and instead creating them in the overridden builder methods.

This makes the super-class initializer call more verbose but it makes the overall flow more
straightforward. It also addresses potential initialization order problems with overridden builder
methods being called on the sub-class before the sub-class's initializer body could execute.

There is one remaining issue with the render pass blocks capturing self before self is assigned
by the call to the super-class initializer but I will fix that next.
CCEffects - Move the uniform translation table to CCEffectRenderPass

This is so the render pass blocks get the translation table from the render pass instead of
having to capture self when they are created.
CCEffects - Stop capturing self in the render pass blocks

Because the blocks are constructed prior to calling (self = [super init]) we shouldn't
capture self in them. Instead, capture the owning interface class weakly.
Merge branch 'metal/effects2-EffectImpl' into metal/effects3-InitializerCleanup

Conflicts:
	cocos2d/CCEffectLighting.m
CCEffects - Fix initialization of conditioned ivars
Merge branch 'metalPrep/Step2-EffectImpl' into metalPrep/Step3-InitializerCleanup

Conflicts:
	cocos2d/CCEffectLighting.m
Merge branch 'metalPrep/Step2-EffectImpl' into metalPrep/Step3-InitializerCleanup

Conflicts:
	cocos2d/CCEffectBloom.m
	cocos2d/CCEffectBlur.m
	cocos2d/CCEffectDropShadow.m
	cocos2d/CCEffectLighting.m
	cocos2d/CCEffectStack.m
CCEffects - Fix bugs in blur, bloom, and drop shadow

When I refactored CCEffect into CCEffect and CCEffectImpl, I broke these effects.
Updates to their properties were not being properly propagated from the interface
to the implementation because these effects will create a new implementation
based on changes to the blur radius.

This also moves some duplicated setup code into a shared function in CCEffectUtils.
Merge branch 'metalPrep/Step2-EffectImpl' into metalPrep/Step3-InitializerCleanup
Merge branch 'develop' into metalPrep/Step3-InitializerCleanup

Conflicts:
	cocos2d/CCEffectLighting.m
CCEffectOutline - Adapt to initializer cleanup
Animation support for CCLightNode properties

- Add support for the scalar float valued properties like intensity, ambientIntensity, etc.
- Implement copyWithZone in CCActionTween so it works correctly on action sequence
completion. Without this change we end up with an uninitialized object, the key string is
ill, and the property setting code throws and exception.
Merge remote-tracking branch 'origin/develop' into develop
Animation support for CCLightNode properties (part 2)

Add CCActionTweenColor which is currently internal to the animation manager.
Use it to animate the specular and ambient color properties of CCLightNode.
Merge remote-tracking branch 'origin/develop' into develop
Merge remote-tracking branch 'upstream/develop' into develop
CCBReader - Rename CCActionTweenColor

...to CCBActionTweenColor since it's internal to CCBReader for the time being.
CCBReader - Only handle light property animation if the node is a light
Merge branch 'develop' into metalPrep/Step3-InitializerCleanup
CCEffects - Handle shader compilation failure

If shader compilation fails, CCEffect initialization returns nil. If CCEffectStack detects this it retries
effect creation with stitching disabled.