Add SkLightDeferredCanvas

The problem of SkDeferredCanvas is that recording time is too long. For
situations where we don't need seralize records for cross process boundary
case, we can save time by safe-ref of the objects in records.

This is exactly what SkLightDeferredCanvas does.  A SkLightDeferredCanvas
is a subclass of SkCanvas.  Inside the SkLightDeferredCanvas, it contains
a SkLightDeferredDevice.  The SkLightDeferredDevice uses a SkRecordQueue for
recording SkCanvas operations and playback.

Because SkRecordQueue is not a subclass of SkCanvas, we save time by
not adding canvas state changes during SkCanvas state change calls.  This
is both good and "bad".

The good is we save time.  The "bad" is we cannot check whether a canvas
draw covers a full frame that previous commands can be skipped.  In
SkLightDeferredCanvas, only clear() is able to skip pending commands.
The other that you cannnot call canvasForDrawIter() because if it is
deferredDrawing, we will return NULL.
compute correct ending point for miter join
fix clipping when using GrShapePathRenderer
clear stencil when current or previous draw is via GrShapePathRenderer with
transparent color.

In case of transparent color, current approach is to clear stencil buffer,
re-compute stencil buffer bit for clipping. so transparent clipping will
be slow
add GrHairLinePathRenderer

GrHairLinePathRenderer is for AA with msaa render target or non-AA with
non-msaa render target.  Comparing to GrDefaultPathRender, the
GrHairLinePathRenderer is able to batch multiple drawPath into one
single glDrawElements() call
Correct onGetStencilSupprt in GrShapePathRenderer