Add tcp-passive and tcp-active socket layers with unit test
Set pair->sockptr when discovering peer-reflexive candidates

Fixes Issue #1
Add RFC4571 framing to ice-tcp for MS-TURN

Data and STUN messages sent over TCP MUST follow the framing method
specified in [RFC4571] section 2. We will frame every outgoing packet
and split it into 62KB frames when sending, and on reception, we will
unframe the rfc4571. For now, we only unframe for udp-turn tcp-act/pass
candidates, which means only for MS-TURN over TCP.
We still need to do the unframing for real ice-tcp candidates, then add
support for reading the data in a serialized way.
Disable reliable mode for test-fullmode, we already have pseudotcp unit tests
Add support for RFC4571 framing (packetized mode) for ICE-TCP candidates
Do not create a socket_source if fileno is NULL
Fix SDP generation for TCP candidates
Fix RFC4571 n_buffers when reading and frame outgoing STUN messages
Store connections in tcp-passive to allow sending

In the case of TCP-ACTIVE, we don't have a problem, because the new
socket will generate a  peer-reflexive candidate with the right
sockptr, and all sends will go through it, but for TCP-PASSIVE, there
is no peer reflexive candidates, so once the pair is selected, the local
candidate will point to the TCP-PASSIVE candidate with the TCP_PASSIVE
socket type which will cause all sends to fail, so we need to proxy
them to the child connections
Print info on selected pair
Small refactor for conncheck add_pair function
Do not retransmit triggered checks if reliable transport
Add support for ICE-TCP

This is a massive commit that can't be split. We add ice-tcp support
into the agent by creating local host tcp-active/tcp-passive candidates.
We also need to find the local and remote candidates whenever we discover
a peer-reflexive because their data is important to setup the peer-reflexive
so a few changes were added to look for the local or remote candidate.
For TCP-ACTIVE remote peer-reflexive candidates, we can't add conncheck
pairs normally because TCP-PASSIVE (local) do not generate candidate pairs,
and we also can't have a connection from any local host, so we can only create
a single candidatepair with the local/remote that are connected.
The pair->socket of a candidate check pair will hold the connected tcp socket
(through connect for ACT or accept for PASS) and we will either have a
remote or a local peer-reflexive which will create a new candidate pair,
we cannot trigger checks on the initial candidate pair, we must only do it
on the new check pairs. but in the case of a tcp-passive, we don't get a new
local peer-reflexive candidate, so there is no new candidate with a new NiceSocket, so
when we get a triggered check, we need to match it to the candidate check pair
or when we select a pair, it will still use the original TCP-PASS socket.
We must store the new connected tcp socket in the peer reflexive candidates
since they represent that unique peer-reflx candidate's connection
Add some informative debug messaging
Send reliable-transport-writable on reliable ice-tcp and drop bogus 'ice-tcp unsupported'
Check real received size for pseuddossl handshake
Wrap socket_send in udp-turn to avoid if/else on reliable everywhere
Only use pseudossl for OC2007 if turn type is TLS
Only create one relay/upnp request for ice-tcp depending on active or passive type
Allocate request is sent on UDP-TURN-OVER-TCP socket and is also framed

The UDP-TURN socket layer is only added at the end after we discover
the relay candidate with Allocate, but until then, we use the
UDP-TURN-OVER-TCP socket layer directly, so we need to do the rfc
framing for that as well, otherwise, it won't work.