Add configuration for core providers to expose the provider interface.

This change causes rtcpeerconnection to close its instance if its constructor fails.
It more generally exposes the ```close()``` and ```onClose()``` methods to support full lifecycle access to core providers which are coded in the ```unprivilegedPromise``` style. For this, they give up the ability to be able to manipulate the freedom.js module that has requested them - they're essentially at the level of a normal provider except they don't ```providePromises``` but rather have that happen implicitly and are passed the provider which has done it to them at construction time.
dispatchEvent?