graphics/buffer.h: Multiple additions/changes

Changed dynamic_elements_buffer description.

Add buffer_metadata and buffer_segment objects. buffer_metadata contains
an array of buffer_segment objects: one for each of the vertex data
subtypes. Some meshes may not have certain data, e.g. LINE or LINE_STRIP
primitives don't have need vertex normals, and textured meshes may not
need vertex colors. Existence of certain vertex data is specified by
non-zero type in the 'type' field of a segment. The segments are
unordered, since data might be loaded into the buffer in a different
order, but there is enough space in the array for each type.

All buffer object types now have an array of MAX_BLOCKS buffer_metadata
elements, since that information must be available for when draws are
generated from the buffer.