New paradigm of packed and unpacked shapes.

Refactored the shapes drawing paradigm.
Shapes are now unpacked to a system buffer, and then loaded to device memory.
Shapes are defined by properties which define the shape, like radius for circles and min and max for rectangles.
Unpacked shapes are made up of vertex attributes. They are in a format ready for loading to the device.
The unpacked shapes are now managed by the ShapeBuffer.
The unpacked text shapes are now managed by the TextBuffer.
After the ShapeBuffer and TextBuffer load the device memory, the buffers in device memory will get used by the ShapePipeline.
The ShapePipeline is similar in spirit to the Device::Pipeline, which sets up the OpenGL programmable pipeline.
Added todo note to refactor the TextBuffer/ShapeBuffer in a OpenGL part and a System part.