Refactored shader effect implementation.
ShaderEffect code was hard to follow, with many methods having the same name
yet performing different functions.
Have refactored the code to use SetProgram() for it's public api, moved and re-wrote
SetPrograms() and SetWrappedProgram() methods from anonymous namespace to private methods
and added a new method called SetProgramImpl() which actually sends the program to the shader
object in the scene graph.
Change-Id: Ic2eaf72a17d337dead1b14746d75f30ffd8ce3f3
Signed-off-by: David Steele <david.steele@partner.samsung.com>