Use microtask for handling extension promise
This changes to use a microtask to decrease the pending promises count
of extendable events. Before this change, by queuing a normal task for
this job, all the reactions to the given promise were allowed to extend
the lifetime of the event. After this change, by queuing a microtask for
this job, only the initial reactions to the given promise are allowed to
extend the lifetime of the event. Any reactions to drived promises or
promises used in the reaction microtasks won't get a chance to extend
it. (See https://github.com/w3c/ServiceWorker/issues/1039#issuecomment-272215615)
This is a follow-up patch for https://github.com/w3c/ServiceWorker/commit/6c1f3fe31a976652d1ac4c48d7f0764ff8d63b58.
Fixes #1039.