OfflineAudioContext.prototype.startRendering returns a promise

The steps are now more clearly sequenced and outlined, which helps make things explicit: e.g. the same `AudioBuffer` instance is used for both the event and the promise, and the details of how the buffer gets filled and initialized are no longer spread out across the method definition, the event definition, and the introductory paragraph.