Almost complete rewrite of RAOP server

Let me commend Mark Kendall for his previous implementation. As far as I could tell, his RAOP server was the only one implementing Airtunes v2 functionalities with a/v sync timestamps.
The rewrite serves several purposes. Mainly, I wanted to take ownership of this area of the code, and there were things I couldn't figure out. Most likely because whatever Mark used for AirPort's technical documentation isn't what I got.
Technical description of RAOP came mostly from:
-http://git.zx2c4.com/Airtunes2/about
-http://blog.technologeek.org/airtunes-v2

I found the later to be the most correct.

Main area of focus:
-Audio Quality: Over slow or poor network connectivity (e.g. slow wireless) and with lots of packet drops: audio would have been corrupted (the system played audio packets in the order they were received, and not in the order they were supposed to be). For testing purposes, I simulated a 30% packet drop, and playback remained perfect.
-A/V Sync: Achieving perfect A/V sync across all platforms and with all the different type of audio architecture is almost impossible. However, I believe the results achieved are very good. Playback will automatically adjust itself according to the network latency and the audio hardware latency.

New features:
We now retrieve the media's metadata: Album name, artist name, song title and coverart. This only works when using iTunes. iOS device do not send metadata unless using FairPlay encryption. We only support RSA encryption.
Currently, this information is only shown in the logs, but in the future we'll be able to nicely show them in mythfrontend.

Additional credits:
-http://nto.github.com/AirPlay.html, gave information about how to configure Bonjour in order to receive MetaData from iTunes
-http://code.google.com/p/ytrack/wiki/DMAP : iTunes DMAP metadata structure

[cherry-picked form bd883d7216b497d8193975e3b19cb7134eaff710]
Add two network utility methods to ServerPool

Add tryListeningPort and tryBindingPort ; those methods are used to bind/listen on all local interfaces, both IPv6 and IPv4.
Add them to ServerPool class as they add functionality to it, but they do not change its functionality and how by default it binds on interfaces by looping individually through all of the.
They will be use for local services that are discovered through Bonjour.

[cherry-picked from db30e6eaad92d067a84314d43f912f57e4d89465]
Fix handling of IPv6 link-local address

ServerPool previously couldn't use IPv6 link-local addresses.
Also, fix the issue where no messages could be received on UDP bound sockets initiated from ServerPool

[cherry-picked from 34c46f1933e3480bd36441b737f46f5058c85e5e]
Add two network utility methods to ServerPool

Will be used by Airplay and RAOP

[cherry-picked from 1d375dbd5ea6b7a44d23e47c5a2f8d35c2e2f23c]
Add full IPv6 support to RAOP and fix Bonjour discovery of RAOP service.

Do not advertise RAOP via Bonjour, if listening on the local interfaces failed

[cherry-picked from 34dcb2bc7a882eb97fbdb9c43a480165c3551140]
Fix RAOP time request failing to send

Was using the wrong socket.
Also fix typo in OPTIONS response.

[cherry-picked from 374e2cd64c77f061aea398658a808c1ebdbb8d7e]
Use new ServerPool capabilities, and only advertise AirPlay via Bonjour if the server creation was successful

[cherry-picked from 29cd39bcb1213a31f2ec8b4d679a8dde6556b652]
Always re-use the same computer ID for AirPlay. Share ID between RAOP and AirPlay

Random ID is generated the first time, the following session will always re-use the same ID.
Having AirPlay and RAOP share the same hardware ID makes mythfrontend behave more like an AppleTV: only one device is showing in the list. Either one for audio or one for audio+video, not both at the same time.

[cherry-picked from f125f53c8be5c9b6bd7c1ea785b606d24bf5bd7b]
Various fixes in Airplay

Fixes:
-Playback on frontend always start at the beginning, iOS continuing to play where left off.
-Scrubbing not working
-Playback position on frontend and iOS device not in sync
-When quitting playback on iOS, video continue on frontend.
-When quitting playback on frontend, iOS not notified and playback counter continues progressing

There's still a minor cosmetic defect, when scrubbing quickly and the iOS device pause playback, the positions between the frontend and iOS device are not in sync. It will become in sync only once playback resume.

MythTV doesn't handle http live streaming playback yet, so Airplay will not work with some applications (in particular AirVideo) streaming via HLS

[cherry-picked from fe11b61ed74e7c128cb7f59e88596e842ef64d75]
Fix seeking with some http streamed content

Do not rely on the URL to determine if we can seek in media. Instead try to seek to the start, if no error occurs: we can seek.
This allows seeking in a youtube stream using AirPlay

[cherry-picked from 357573abd6a7757931d90f25014211044f4a87eb]
Add AirPlay support from iTunes.

iTunes doesn't send session ID when initiating a connection, we receiving content without a session id, use the IP address of the AirPlay client instead.

[cherry-picked from 1f4f89b2206325b6f2bdd8face7d9e2b572144b5]
Bump API version number to "0.25.20120506-1

Following changes to ServerPool