adds fixed function vertex attributes

+ leaves programmable path as is (everything but for indices is an attribute)
+ adds fixed function vertex attributes for fixed function pipeline
+ this keeps the promise intact that a buffer location == shader attrib location
+ keeps the programmable path clean so that when we deprecate the fixed function pipeline eventually, we can do this by only removing a couple of if branches.
+ caches programmable renderer test for speed and stability
better caching for isProgrammable

+ query isProgrammable once, keep as static bool for all to see.
+ since it's impossible to have a fixed function and a programmable context within one app, the check only needs to happen once, even a rendererCollection must be homogenous in this respect.
update checks for fixed function renderer

+ makes sure fixed function renderer checks for usingVerts rather than the position attribute when issuing draw commands.
+ uses fixedFunctionPositionAttribute to draw when using fixed function.
add vao checks to fixed function helper methods

+ ensure VAO availability is checked before helper methods set vbo data
fix renderer check

+ ensures renderer check only happens *after* renderer has been initialised.

Since there are lots of static `ofVbos` and `ofVboMesh`es floating around, these get initialised before the actual renderer does. This makes sure to perform the renderer check only after the renderer has been initialised.
fix const getters
fix missing location setting in setAttributeBuffer
changelog update

add entry for ofVbo refactor
Merge pull request #3379 from tgfrerer/fix-fixed-function-vbo-attrib

Fix fixed function vbo attrib
ofVbo: refactor to simplify logic + fix some problems
ofVbo: move setData/Buffer methods into VertexAttribute
vao init upon bind fix

+ fixes an issue where a newly created vao might not be filled with values, since it would be kept unchanged. A newly created vao is marked as changed, i.e. dirty

to reproduce:

`ofNofill();
ofSetColor(ofColor::yellow);
ofDrawRectangle(ofRectangle(...)); // will not draw`
Merge pull request #3380 from tgfrerer/fix-vao-changed-upon-initialisation

vao init upon bind fix
ensure

+ this makes sure that "redirected" programmable attributes are updated using their built-in vertexAttributes, otherwise updateAttributeData would have no effect on locations 0,1,2,3 in programmable GL.
add checks to ofVbo::updateAttributeData

+ makes sure to only allow updates to existing attributes (programmable)
+ makes sure only allocated attributes are allowed updates (all renderers)
ofShader: compute shaders only if supported
Merge branch 'master' of github.com:openframeworks/openFrameworks
Merge pull request #3383 from tgfrerer/fix-updateAttributeData

fix ofVbo::updateAttributeData for programmable GL built-ins
ofVbo: update: remove redundant checks
fixed bug where getIndexAtLength(perimeter) returns 0 instead of the final index. closes #3389