Renamed Buffer to BufferObject for future consistency with other objects.
Do not initialize buffer when the data pointer is nullptr.
fix glGenBuffers: also report the buffer names to the client.
Add most of the vertex array support.