Add a helper for implementing Promise-valued properties.

ScriptPromiseProperty is intended for implementing DOM attributes
whose value is a Promise. Specifically:

- The same Promise object is returned each time. Many specifications
  require this (for example FontFaceSet.ready [1]).

- All references to script objects are 'weak'. This means
  ScriptPromiseProperty will not cause leaks through cross-heap
  references. The caller must ensure the lifetime of the "holder's"
  wrapper, which is typically already the case if the property was
  accessed through script.

- The API is designed to support multiple worlds, with one Promise in
  each. However currently only the main world is supported.

- The ScriptPromiseProperty is an ActiveDOMObject and handles
  suspending settling the Promise while ActiveDOMObjects are
  suspended.

This is ongoing work in implementing navigator.serviceWorker.ready.

[1] http://dev.w3.org/csswg/css-font-loading/#font-face-set-ready

BUG=363967

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

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