Fix for storing shader uniform and attrib location

Currently, `SPProgram` uses the uniform name index as the program
location for the uniform. While this works (through coincidence) on iOS
5 and 6, it breaks for iOS 7 preview 2, causing the call to
`glUniformMatrix4fv` in `SPBaseEffect.m:97` to fail with
`GL_INVALID_OPERATION` error due to the wrong location being used.

The fix is to use `glGetUniformLocation` and `glGetAttribLocation` to
fetch the correct locations for the inputs from th input name.

The fix was tested with a trivial program showing a textured sprite and
untextured quad which now works on both iOS 6.1 and iOS 7 (unfortunately
I don't have any iOS 5 devices to hand). Unit tests also pass of course.
Merge pull request #10 from mnem/fix-shader-value-locations

Fix for storing shader uniform and attrib location

Previous code worked (through coincidence) on iOS 5 and 6, but broke in iOS 7.
small pma optimization