Use const references to create globals without dynamic initialization

This comment from StaticConstructors.h explains how it works:

  We need to avoid having static constructors.  This is accomplished by
  defining a static array of the appropriate size and alignment, and
  defining a const reference that points to the buffer.  During
  initialization, the object will be constructed with placement new into
  the buffer.  This works with MSVC, GCC, and Clang without producing
  dynamic initialization code, even at -O0.  The only downside is that
  all external translation units will have to emit one more load, while
  a real global could be referenced directly by absolute or relative
  addressing.

Blink was already doing this for exported globals anyway, so this is a
nice cleanup.  I tested this locally by building webcore with Clang on
Windows.

R=thakis@chromium.org,eseidel@chromium.org
BUG=82385

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

git-svn-id: svn://svn.chromium.org/blink/trunk@178809 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Ensure JavaScript equality when serviceWorker.register resolves to an existing worker [1/3]

If there's an existing registration for the scope and script url,
serviceWorker.register resolves to the active worker for that registration. This
patch modifies the dispatcher to reuse an existing ServiceWorkerHandle, so
service workers that are the same have JavaScript equality.

Three-sided patch:
[1] Blink: ServiceWorker::from can be called from CallbackPromiseAdapter
for a SW that was already registered and reached the proxy "ready" state
[2] Chromium: https://codereview.chromium.org/412833002/
[3] Blink: https://codereview.chromium.org/411863003

BUG=395928

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

git-svn-id: svn://svn.chromium.org/blink/trunk@178810 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Add CacheStorage interface to ServiceWorkerGlobalScope.

This adds a "nativeCaches" object which provides the CacheStorage API
and IDL. Done as a single CL to separate the review of the
WebServiceWorkerFoo classes out.

After we have a working native cache implementation, we'll rename
"nativeCaches" to caches, and drop the polyfills. Until then, you can
play with it by assigning self.caches = self.nativeCaches.

BUG=392621
R=jkarlin@chromium.org,falken@chromium.org

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

git-svn-id: svn://svn.chromium.org/blink/trunk@178811 bbb929c8-8fbe-4397-9dbb-9b2b20218538
[Windows] Fall back on 2 x ascent if no max width is present 

If the max character width cannot be determined for a font fall back on
2 x the font ascent.

R=bungeman@chromium.org
BUG=395043

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

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