ServiceWorker: Implement ServiceWorkerRegistration [1/3]

This implements a part of ServiceWorkerRegistration interface as per the latest
spec, and makes navigator.serviceWorker.register() resolve a promise with a
ServiceWorkerRegistration object instead of a ServiceWorker object.

Spec: https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-registration-obj

[1] Blink: This patch.
[2] Chromium: https://codereview.chromium.org/415963002/
[3] Blink: Remove the macro and fix a bunch of layout tests.


BUG=396400
TEST=compile (tests will be added by subsequent patches)

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

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