Vertex types and vertex buffer

Can now describe a new vertex type and create a templated vertex buffer
which stores it. Shaders can then use layout location to access these
vertex attributes. New shader showing this is ShowNormals.