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
- adds adjacency and patches primitive types useful for geometry and tessellation shaders

this branch starts from the emscripten one so the diff with current master contains that too