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.
are these mutually exclusive? Why aren't they just two 'if' statements?