Collect WebGL actual context attributes from drawing buffer

WebGL's getContextAttributes() function is defined to return the attributes
of the drawing buffer associated with the context. This isn't a property of
the underlying GL context, but of the drawing buffer created on top of that
context since different framebuffers can have different alpha/depth/multisample
status. Prior to this patch the implementation of blink::WebGraphicsContext3d::
getContextAttributes() was returning values for the default framebuffer which
WebGLRenderingContext / DrawingBuffer never actually used. This instead collects
the attributes for the drawing buffer whenever it is created. This also has
the benefit of avoiding synchronous glGetIntergerv() calls for contexts not
used by WebGL.

This patch also allocates a packed depth+stencil buffer in DrawingBuffer whenever
either are requested and the packed extension is supported, which matches the
behavior currently implemented in the service side:

http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/service/gles2_cmd_decoder.cc?revision=273678&view=markup
at lines 2454 / 2478.

BUG=378018

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

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