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.
other ones are
```provideSynchronous```, ```provideAsynchronous```, and ```providePromises```. Those ones are all common between normal providers which live in a module and core providers.  However, in the case of core providers, an initial argument is passed to the constructor of the module which instantiates the instance of the provider class.  Here, we define a new option just for core providers allowing them to be ```unprivileged``` and just get a reference to the ```src/provider``` that is instantiating them, the same interface that a normal in-module class would have access to.

I think I see what you're saying about overloading the meaning of this. I'll refactor it to keep exports.style as the same as before, but add a new key like ```exports.privileged``` which can be set to false to do that substitution independent of coding style.