Revise the rules of the negotiation-needed flag for transceivers.
Addresses issue #803.
Besides just revising the negotiation-needed sections to deal with
transceivers instead of tracks, this commit makes the following
improvements relevant to the negotiation-needed flag:
- Use an internal slot to represent the flag.
- Only update the flag when applying an answer, or modifying the
PeerConnection in the "stable" signaling state. *Not* when creating an
answer.
- Instead of directly firing the negotiationneeded event when applying an
answer, queue a task to check the flag again and then fire it (which
is how it's normally fired).
- More thoroughly specify the steps for updating the negotiation-needed
flag, and the criteria for determining if negotiation is needed.
- Reference these steps in every method where the negotiation-needed
flag may possibly be updated.
- Remove text talking about RtpReceivers allowing the application to
control the receipt of media, requiring negotiation. There's no method
on RtpReceiver that does anything but provide information to the
application.