ShaderManager manages data entry into shader

The Buffer class and ShaderManager classes have been modified to only
add data to the buffer once all of the information has been generated,
so that information is not being written over top of each other as
multiple objects try to commit data to the buffer.

This build is broken.