conncheck: implement more strictly nomination change with tcp candidates

This patch fixes a couple of places where the agent may be in aggressive
nomination mode, with the controlling role, and having to deal with TCP
(remote) candidates. It implements section 8 of RFC 6544, "Concluding
ICE Processing" stating that the agent must use the regular selection
algorithm when there are TCP candidates for a media stream.

Previously, only addition of new remote candidates were tested for this
constraint, and eventually, the nomination mode was promoted to regular.

This same test must also be done when a TCP peer reflexive remote
candidate is discovered. Since TCP local candidates remain alive, they
can receive inbound stun request with this transport.

And a similar decision must be done when the agent role switches from
controlled to controlling. We may end up with an agent that already had
collected TCP remote candidates, due to its previous aggressive
controlled status.

The conditions to accept the nomination switch is also a bit modified:
(1) we must be in state < connected (because in state connected, we may
    have already nominated pairs obtained in aggressive mode, that would
    break the regular nomination criterion selection)
(2) and with zero ongoing stun requests

These conditions can be relaxed in case of the role conflict resolution
because (2) is not a problem, the inflight stun transaction have the
use-candidate unset, since the previous role was controlled, and (1) is
always verified: we couldn't conclude a mutual successfull stun exchange
before resolving a role conflict.
11 jobs for implement-more-strictly-nomination-change-with-tcp-candidates in 4 minutes and 39 seconds (queued for 1 second)
Status Job ID Name Coverage
  Build
passed #2793014
build autotools

00:00:54

passed #2793015
build meson

00:00:26

passed #2793017
1809 windows docker
build msvc amd64

00:04:32

passed #2793018
1809 windows docker
build msvc x86

00:04:35

failed #2793016
1809 windows docker allowed to fail
build msys2

00:01:36

 
  Test
passed #2793021
distcheck autotools

00:02:28

passed #2793024
doc-and-install meson

00:00:36

passed #2793019
test autotools

00:01:56

passed #2793020
test autotools valgrind

00:02:27

passed #2793022
test meson

00:00:59

passed #2793023
test valgrind meson

00:00:53

 
Name Stage Failure
failed
build msys2 Build
Git branch:   12-10-stable
GO version: go1.13.8
Built: 2020-04-21T11:59:25+0000
OS/Arch: windows/amd64
Uploading artifacts...
WARNING: build/meson-logs/: no matching files
WARNING: build/build.ninja: no matching files
ERROR: No files to upload
ERROR: Job failed: exit code 3221225477