Factored a 'vertex layout' object out of GLGeometry

Describes a vertex layout that can be use with different GL programs,
some of which may not support all of the atrributes included in the layout.
Example case is for feature selection passes, which include an extra attribute
not present in the main render pass.
Also hope this addresses an issue on Linux, where I believe an attribute was getting
optimized out of a program, causing program errors when trying to enable the attribute.