1. convert mat4 directly from exist mat3, and remove unused calculation
code.
2. since normalized position is only meaningful in vertex shader stage.
use logical position in fragment shader stage for all gradient
pipeline.
VAO is new object in modern GL API, which can split and manage vertex
buffer and attribute state. This is optional in GLES and is mandatory in
GL.
Also index buffer is faster then pass cpu data in GL draw call.
The 3x3 matrix already contains the geometric transformation
information required for 2D rendering.
We can directly convert from the 3x3 matrix to
the 4x4 matrix to facilitate subsequent GPU rendering.
re-design the shape data structure so that render backends
are able to access them directly.
This also let us remove tvgShape member data from the Shape::Impl.
To achieve this, migrate shape/stroke/path
from the canvas interface to the render interface.