Reorganize mDNS advertisement and add a few backends.

This PR reorganizes the mDNS management in shairport.

mDNS is now handled more or less in the same way audio is.
Multiple mDNS backends are available, shairport tries them all until one
works.

This makes it, IMHO, cleaner, and easier to add other mDNS backends in
the future, such as using tinysvcmdns or dns-sd library.
Also it will also allow to define mDNS backends as plugins, in a similar
way it is done in PR #230.

The PR also adds two new mDNS backends : 
- `dns-sd` : uses mDNSResponder to advertise the service. However, instead of calling an external program, it uses the library provide by the `dns_sd.h` header available on OS X
- `tinysvcmdns`: embeds tinysvcmdns to advertise the service. Does not require an external daemon. However it is less robust and does not support ipv6. It may be used while a mDNS daemon is running on the computer.