Modernize WebRTC with promises compatibly with hybrid.

Let me know if I missed anything. Leaving polish of legacy note to others.
No it is probably not. Thanks for catching this. Promises can only be resolved on the main thread, but http://www.w3.org/2001/tag/doc/promises-guide#queue-tasks recommends spec-shorthands that I was trying to use here, but they wont work in our case. We probably need to elaborate the need to test if we're closed back on main thread before a promise gets resolved, which means not using this documentation shortcut.