raop: Support for devices capable with both TCP and UDP

Some devices (e.g. AirPort Express 2nd gen?) support both TCP and
UDP protocol. This patch recognizes such a case.

Also, this patch prefers UDP. That is, if a device is announcing
both TCP and UDP capabilities, PulseAudio will connect to it via
UDP protocol.

Commit message written by Hajime Fujita.
raop: Refactor UDP packet send path

Current code is written for a case where send(2) for UDP socket
succeeds partially. However unlike for TCP for other regular
file stream, UDP (SOCK_DGRAM) socket has a kind of atomic property
that single send(2) forms a single UDP datagram. Therefore looping
send for single packet data is useless. In fact, I believe that
"partial write" won't happen for UDP sockets (either succeeds or
fails if too big).

This patch also does some refactoring around UDP send path. RTP
packet header construction is moved to a newly introduced function
udp_build_audio_header and its endian dependency is removed.
raop: Packet retransmission support for UDP

This patch adds an RTP audio packet retransmission support and a
circular buffer implementation for it.

This patch was originally written by Matthias Wabersich [1] and
later debugged and integrated into the latest tree by Hajime Fujita

[1]: https://bugs.freedesktop.org/show_bug.cgi?id=42804#c44
raop: More precise thread wakeup clock calculation

Current wakeup clock calculation scheme accumulates an error per
each sleep cycle (max. 1us/cycle) due to precision limitation of
pa_usec_t. Thus it may cause timing issue when playing music for
a long period.

This patch introduces a new clock calculation scheme to minimize
an error.
raop: Safe socket closing on UDP connection closing

Control and timing fds are registered in rtpoll, so they should be
closed after rtpoll is disabled.