Initial implementation of display list backed 2D canvases

This change adds a new type of ImageBufferSurface that is backed by
an SkPicture. Instead of rasterizing the canvas on the main thread,
the contents of the SkPicture are fed into the SkPicture of the
containing layer, thus allowing the content to be rasterized by the
compositor.

There are cases that break this rendering model, for example when
a readback is performed on the canvas (e.g. call to getImageData)
When that happens, the canvas backing falls back to being rasterized
on the main thread.

This feature is currently disabled by default and controlled through
web settings. A follow-up chromium patch will expose the feature as an
experiment that can be enable in chrome://flags or at the command line.

BUG=386601

Review URL: https://codereview.chromium.org/379253002

git-svn-id: svn://svn.chromium.org/blink/trunk@178585 bbb929c8-8fbe-4397-9dbb-9b2b20218538