add more sophisticated openGL capability checks.

* if we are using the programmable gl renderer, it is safe to assume glDrawElementsInstanced is available (it is a GL core feature from 3.1)

* for legacy GL, we check against the extensions our hardware provides us with, namely:

````GL_ARB_draw_instanced````, which, in turn, depends on either ````EXT_gpu_shader4```` or ````NV_vertex_program4```` .

It's not super-pretty, but commented throughout.

addresses issue #2457

Signed-off-by: tgfrerer <tim@poniesandlight.co.uk>