Parallelize SkLightDeferredCanvas:

parallelize SkLightDeferredCanvas.  With parallelization, there is a back
ground playback thread that takes the commands from SkRecordQueue and
executes that.  This means

1. SkipPendingCommands() is ignored.  Parallel always playback without
   skipping
2. when SkLightDeferredCanvas.enableThreadedPlayback(true), the background
   is automatically created.
3. when SkLightDeferredCanvas.enableThreadedPlayback(false), the
   background thread finishes all pending commands and wait for threads
4. Skia is not designed for multithreaded rendering.  This means when
   in parallel mode, you can only call SkLigDeferredCanvas interfaces
5. Do not call deferred device or SkSurface used to create the deferred
   canvas.  This will like results in memory corruption
6. You must supply SkLightDeferredCanvas::NotificationClient, at least
   implement prepareForDraw() and finishDraw().  If it is GPU rendering,
   prepareForDraw() should provide gl context switch in, while
   finishDraw() should provide gl context switch to None
7. For chromium browser, you don't need to implement finishDraw()
correct GR_GL_MAX_SAMPLES_EXT
force calling moveTo() if there is no previous path