Reorganize mDNS advertisement

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.
Add a command-line option to force the mDNS backend

Add this option to the system-v init script.
Add a new mDNS backend based on tinysvcmdns

This backend allows shairport to run without having a heavy daemon such
as avahi or mDNSResponder running in the background.
ipv6 support is more or less experimental right now.
Add a new mDNS backend which uses mDNSResponder

This backend uses mDNSResponder, like the external-dns-sd one. However,
this one uses the dns-sd library instead of relying on an external
program.
Add a note in the README about mDNS backends
Don't build the dns_sd bakend if avahi is detected.

Avahi provides (sometimes at least) a dns_sd compatibility layer.
There's no point using it if we can use avahi's "native" library, so
don't even detect dns_sd.h's availability
whitespace cleanups
dns_sd: don't require C99