More programmable GL

this adds more features to the programmable renderer version:

- programmable lights and materials through shaders based on code @joshuanoble started in yamaguchi
- new area light type only available with the programmable pipeline
- allow to set a specific version of openGL like:
```cpp
    ofSetOpenGLVersion(4,4);
```
which generates the default shader versions dynamically allowing to use new features like tessellation or compute shaders
- simplifies the default shaders by not having separate versions for GLES and desktop GL using some defines for the main differences among them

this branch starts from the emscripten one so the diff with current master contains that too