Peer connection renegotiation

This PR adds support to create offer/answers based on the need of renegotiation. This requires browser support of the onnegotiationneeded event. Only Chrome does have this in a somewhat functioning state at the time of writing. Workarounds for Firefox have been added. Though when doing renegotiation this breaks Chrome/Firefox interop. For this reason it is disabled by default. The PR should still be merged as these changes also bring plenty optimizations regarding stream handling and multi stream support.