Fixed a potential bug with attribute used by name
When using generic attributes by name, a bug could potentially prevent
usage of different shader programs on the same VertexSpecification.

vbo.d: -added a new function: void locateAttributes(GLProgram)
        recovers and saves the locations of "named" generic attributes
       -changed the function void use(GLProgram = null), we now have
         >use(void): uses the VertexSpecification object, requires
              at least a previous call to locateAttributes(GLProgram)
         >use(GLProgram): calls locateAttribute, then use(void).
              this is the version that allows the examples to run
              unmodified, and to write less code while prototyping.
examples/vertexspecification.d
       -changed the OpenGL shader: this way only 3.0 + one extension is
              required. Otherwise, OpenGL 3.3 would be necessary, and
              some drivers don't support 3.3 yet (mesa opensource drivers
              on my Ubuntu 13.10, just as an example).