jitterbuffer: correctly check for invalid values

Check for -1 on the guint from the buffer item instead of on the guint16
or guint32.
Also insert -1 seqnum at the head of the jitterbuffer.
rtpjitterbuffer: reorganize jitterbuffer items

Keep the oldest item at the head and the newest items on the tail. This
makes it easier to deal with -1 seqnums.
rtpjitterbuffer: detect -1 seqnum

Keep the seqnum as a full guint so that we can check for -1 entries and
deal with them correctly.
Immediately try to push -1 seqnum.
rtpjitterbuffer: serialize events in the buffer

Serialize events into the jitterbuffer by inserting them with a -1
seqnum.
Update unit test to expect events from the streaming thread.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=652986
rtpsession: determine if the session is doing point-to-point

In this case T_dither_max is set to 0 according to RFC 4585
session: ignore RTCP packets for the BYE sources

When we are scheduling BYE packets, ignore all RTCP for the sources that
are scheduling a BYE packet. Other sources that are not scheduling BYE
should continue receiving RTCP packets as usual.
rtpsession: also count NACKS when no signal was pending
rtpsession: reset state after scheduling BYE

After we do RTCP, we are not scheduling bye anymore.
rtpsession: when we schedule BYE, only deal with BYE sources

When we are doing the RTCP timeout to schedule BYE packets, don't
generate RTCP for all sources but only for the sources marked as BYE.
rtpsession: keep extra stats for scheduling BYE

Keep an extra stats structure for scheduling the BYE packets. When we
decide to schedule BYE, make a copy of the current stats into the
bye_stats. Then while we schedule the BYE, update and use only the
bye_stats. When we finished scheduling the BYE packet, we use the
regular stats again.
tests/check: add rtpcollision::test_master_ssrc_collision unit test

It checks the payloader changes its ssrc when collision happens
tests/check: improve rtpcollision::test_master_ssrc_collision to ensure that a collision does not BYE the whole session

Conflicts:
	tests/check/elements/rtpcollision.c
doc: add design-rtpcollision.txt that explains when GstRTPCollision is created

It also talks about "BYE only the corresponding source, not the whole session."
docs: improve docs
tests/check: add an rtpsession unit test to verify all RBs are included in all SRs, roundrobin

This test checks that when we have multiple internal sender sources
in rtpsession, SRs contain RBs for every other sender source, and that
they are included roundrobin when they exceed ST_RTCP_MAX_RB_COUNT,
which is the max number of RBs that can fit in a SR.
rtpsession: fix rb blocks disappearing after the first rtcp cycle with multiple senders

Previously, when the session had multiple internal sender SSRCs, it would
issue SR reports with RB blocks only on the first RTCP timeout and afterwards
SR reports would be sent empty. This was because the "generation" number
in RTPSource would increase more than once during the same cycle and afterwards
it would always be greater than the session's generation, which would cause
it to be skipped from being included in RBs.

This commit fixes this problem by:
1) Increasing the RTPSource generation only at the end of each cycle,
which essentially fixes the problem but only when the internal senders
are less than GST_RTCP_MAX_RB_COUNT.
2) Keeping for each RTPSource a set of SSRCs which stores which SSRC's
SR the given RTPSource has been reported in, which also fixes the problem
when the internal senders are more than GST_RTCP_MAX_RB_COUNT. This is
necessary because of the fact that any RTPSource is marked as reported
in itself's SR and makes it impossible to know if it has been reported
in other SRs too or not, and which.
rtpsession: Process PSFB FIR requests which lack the media ssrc

According to RFC 5104 section 4.3.1.2, RTCP PSFB FIR message SHALL
have a media_ssrc field set to 0. The actual media ssrc is in the FCI.
So in that case, we ignore the retained feedback and just let it through
to the rtp_session_process_fir() function which will check for the actual
SSRC inside the FCI.

Fixes a regression introduced by commit 57c27ec3
tests: Initialize segment in rtpcollision test
rtpsession: Only count nacks when a nack packet is received

Not when any RTCP feedback packet is.
rtpsession: Add error message if the app tries to set the internal-ssrc