Formalize how createOffer interacts with identity providers.
Fixes #1184.
This cleans things up slightly, and fixes a corner case race condition,
where in the following sequence:
```
pc.setIdentityProvider(a);
pc.createOffer().then(...);
pc.setIdentityProvider(b);
pc.createOffer().then(...);
```
It wasn't completely clear if the first `createOffer` would use the
assertion from `a` or `b`. The answer now is "it will use `a`".