Refactoring ImageBuffer to decouple it from Canvas2DLayerBridge

This change adds a new abstraction layer called ImageBufferSurface which is
used to provide a rendering surface to ImageBuffers.  The motivation is to
move the construction of the canvas layer bridge into HTMLCanvasElement, which
will make it possible, in a future change, to attach it to a per-WebView
Canvas2DLayerManager. Having one Manager per WebView (instead of per renderer
process) will make it possible to have canvas resource management policies
that depend on whether the owning WebView is active.

Other effects of this change:
* Changed all call sites that used Unaccelerated image buffers to stop
  using platform surfaces, and used malloc'ed buffers instead.
* Non-drawable image buffers no longer create an SkCanvas and a GraphicsContext
* It is now possible to create an accelerated ImageBuffer without a
  Canvas2DLayerBridge (useful for accelerated image filters).
* Buffer creation fallback sequence is no longer baked-in to the ImageBuffer
  constructor, making it possible for different call sites to have different
  fallback logic.
* ImageBuffer no longer provides support for device scale factors

BUG=244427
R=senorblanco,jamesr

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

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