Use VAO to store vertex attributes.

With recent AMD drivers (atiumdag 14.301.1001.0) a Vertex Array Object is needed in 3.3 and 4.2 core contexts.

Without this fix the program emits the following error `glDrawArrays in a Core context called without a bound Vertex Array Object` to the debug output, and no geometry is drawn.