Split attribute_buffer class into two separate classes interleaved_attr_buffer and segregated_attr_buffer with common functionality being retained in an abstract attribute_buffer class