agent: Fix a leak in nice_output_stream_write() with a NULL cancellable

If @cancellable is NULL in a call to nice_output_stream_write(), the
WriteData struct is created with a reference count of 4, but only two
operations are scheduled which will result in its reference count being
decremented. The third operation is only scheduled if @cancellable is
non-NULL (and the final reference is dropped unconditionally at the end
of the function).

Fix this by properly implementing reference counting for WriteData,
rather than hard-coding the expected number of references in a fragile
and unmaintainable way.
agent: Limit printed length of uname and password in debug output

At this point in the code, neither the username nor password are
nul-terminated, so printing them in the debug output as nul-terminated
strings can easily result in rubbish being printed after them.

Fix this by specifying the string length in the printf() format string.
Finally my terminal will no longer ask me to install N’Ko fonts when
running the libnice tests.
agent: Factor out a tiny bit of common code
stun: Restore argument type to stun_usage_bind_process(), it's used outside libnice
agent: Fix leaks if a component is removed during a recv() call

If the error handling block in the middle of the recv() loop is hit,
various things were previously leaked (context, cancellable_source) and
the return values were potentially incorrect.

Fix the break out of the error handling block to clean up correctly.
Small documentation fix
Add ICE-TCP candidate transport types
Fix documentation in preparation for ice-tcp support
Some refactoring to allow for ice-tcp (non pseudotcp reliable)
Add a socket type for socket layer
Allow tcp-bsd to act as reliable or non reliable transport and fix is_reliable on other sockets
Fix return value of send_messages in socks5
Return number of sent messages in socket_send_messages when an error happens part-way
turn: In case of error, don't just pass through the data, return an error
Add a nice_socket_send_reliable API for internal use.
One issue with tcp-bsd is that it will queue messages when the tcp socket
is not writable, but it will also drop messages when the queue is full.
If we want to do proper reliable ice-tcp, we need to make sure that
messages don't get dropped, also, this would affect http/socks5/pseudossl
if their messages get dropped. For ice-tcp, when the socket is not writable
we want to return 0, not queue the message.
The change here is to allow connchecks and other important protocol messages
to be sent as 'reliable' on tcp transports by queuing them and in the various
socket layers and to never drop them, but all user messages will be dropped.

if the tcp socket is not writable.
Factor out pseudotcp so it's not used if the transport is already reliable
Add support for MS Office Communicator pseudossl compatibility
Add support for MS-TURN in tcp-turn
Small refactoring of agent, loop on component id from 1
Fix indentation for _set_remote_candidates_locked