Move primitive things into the primitive folder
Get rid of font compiling for now
Make GLProgram code make more sense
Make model spin in place, not around
Make model attribs more general
New way of doing primitives

Now, primitives are generated using the PrimitiveData class, which
handles adding attributes and such. They are compiled into Primitives.
Finally, primitives are bound to GLPrograms to form BoundPrimitives,
which can actually be drawn.
Give BoundPrimitive vertex/index buffer refs

We want the BoundPrimitives to continue working even if the Primitive is
destroyed, so we need to make sure that the buffers aren't freed when
the primitive is deconstructed
Use the correct shader
Use base classes to handle OpenGL references

Use two base classes, GLCopyRef and GLCreateRef to handle references
created for OpenGL. Instead of having each class manage the references
themselves, these classes do it for them. More classes will be changed
in the proceeding commits.

Switch GLAttribRef, GLBufferRef, GLSamplerRef, GLShaderRef,
GLTextureRef, GLUniformBlockRef, GLVertexArrayRef and fix some copying
problems
Make bound primitives handle program binding
Move binding outside of models
Add lighting programs