CCEffectRefraction - Initial commit - WIP

It works but there are a lot of magic numbers in the GLSL that tie it to a particular size of
environment map. It also won't work with rotating sprites yet.
CCEffectRefraction - Support rotation

Compute the tangent and binormal for the sprite in the effect's begin block and pass these
to the shader as uniforms. Use these vectors to convert the the tangent space vectors from the
normal map to screen space.
CCEffectRefraction - Remove import of CCEffectBrightness.h

Its presence was a copy-paste error.
CCEffectRefraction - Remove some magic numbers

Instead of the environment being supplied as a CCTexture it is now a CCSprite. This allows the
effect to account for the position of the environment within the scene when computing texture
coordinates. From the environment sprite, compute the offset and scale to map from screen space
fragment positions to environment texture space. This accounts for environment sprite position and
scale but I've not tested rotation or non-default texture rects. That means they're broken.
Add [CCSprite nodeToTextureTransform]

For mapping from local node coordinates to texture coordinates.
CCEffectRefraction - Improve the mapping from screen space coordinates to environment coordinates

The previous code would not work with all transformations that could be applied to the environment sprite
(changes to the texture rect, rotation, etc). This code constructs the affine transform from screen space
coordinates to the environment sprite's texture coordinates so it handles all possible transforms of the
environment.

There is still one issue remaining with my handling of the tangent and binormal vectors. The fix for that
is coming up.
CCEffectRefraction - Improve variable names to reflect the corresponding coordinate transformations
CCEffectRefraction - Fix environment rotation

The old code just transformed the sprite's tangent and binormal vectors by the sprite's transform
to convert them to world space. This worked if the environment wasn't rotated (i.e. the environment's
rotation was the same as the world's rotation) but it failed if the environment was rotated. Instead we
need to compute the sprite's tangent and binormal in environment space which means concatenating
the following transforms: spriteToWorld * worldToEnv * envToEnvTexture and applying these to the
tangent and binormal.
CCEffectRefraction - gl_FragCoord is already a vec4
CCEffect cleanup - Move properties before method declarations

There's no functional change.
CCEffectStack - Remove addEffect and removeEffect

Viktor's feedback was to follow the model of CCActionSequence and make CCEffectStack immutable.
Even though it means it will not be used for now, I'm keeping the passesDidChange notification method.
It's possible that changes to the parameters of stacked effects will dirty the flattened pass list and the
ability to bubble the dirty state up to the root of a stack tree will still be necessary.
Spelling fix.
CCEffectSaturation - Clamp inputs to [-1..1] and map from these to GLSL

The values [-1..1] match our brightness and contrast effects (and photoshop's standard
[-100..100] range). -1 is complete desaturation, 0 is no change, 1 is saturation boost by
100%.
CCEffectBrightness / Contrast - Incorporate jtwigg's feedback regarding property conditioning

Store the conditioned property values separately so the user will read the same value they write in code
like this:

CCEffectContrast *contrast = ...
contrast.contrast = 1.0f;
float foo = contrast.contrast;

This was not the case before and could be confusing.
Merge remote-tracking branch 'upstream/develop' into develop
CCActionCallFunc set target node to weak, Setup scheduler in CCAnimationManager only if added to a node (onEnter)
Opacity KeyFrame not using float values spritebuilder/SpriteBuilder#658
Node visibility flag not honoured on CCBFile child nodes spritebuilder/SpriteBuilder#659
CCEffectsTest - Add refraction test
Refactored CCEffectGaussianBlur, it can now support a varying pixel blur size.