Add a new GrShapePathRenderer for cubic/quad/arbitrary path stroke Ganesh

GrShapePathRender takes a minimal usage of stencil buffer. Instead,
GrShapePathRender tessellate a path into three paths: a inner contour,
a outer contour and a path contains all caps and joins (these are either
triangles, quad lines or retangles).

At geometry generation time (GrShapePathRenderer::createGeom), triangles
are generated from outer contour with corresponding inner contour, and
the joins and caps are added.

The renderer avoids stenciling if the paint is opaque, otherwise, it clears
the stencil buffer with clip bit, then for each pixel, it tests the
stencil buffer, if the pixel buffer value is not zero, it clears it and
passes the test, otherwise, stencil test fails.  Using this method, the
renderer avoids overlapping drawing.

Compare to GrDefaultPathRenderer, it at least doubles the performance on PC.

TODO:
1. take care of when stencil bit = 0
2. test with various effects and shader - gradient shader, shadow and
   blur effects
3. what happens if the clip and paint has differents AntiAliasing?
add query for glUnmap for >= GLES 3.0