Advertise MPD with Avahi

A rudimentary implementation to resolve #39, ignoring dbus errors (just restart), name collisions (choose a fresh name), etc.
Avahi python compatibility fix
Avahi wrapper moved to utils
Avahi constants named
Avahi hostname choice extracted for reuse
core: Letting filter() accept lists
Adding a 'to list' conversion and correcting horrible mistake in comparison (put it reverse)
Advertise HTTP with Avahi
Adding test case
tests: Fixing self confusion mistake
docs: Documenting tracklist's new filter() feature
core: Changing input to accept also sets, as might be also used.
core: filter() to accept also tuples
Fix scan with multiple track artists and add tests
Fix review comments
Another round of review comments
utils: Remove Python 2.6 workaround
avahi: Style and code cleanups in zeroconf module.

- Prepare for handling missing dbus directly in module.
- Constants should always be all caps.
- Extracted helpers from class to convey intent via their naming.
- Moved imports out of class, imports should always be on the top.
- Made sure calling publish mutiple times does not re-convert text.
- Made sure calling unpublish without publish does not break.
avahi: Improve error handling for dbus errors.

- Handle dbus not being installed.
- Handle not finding the system bus.
- Handle not finding the avahi service.
- Return if publish succeeded.
avahi: Convert MPD and HTTP to use cleaned up versions

- Move imports to top as they should be.
- Report state based on publish return value.
- Remove overly broad except clauses.
- Unpublish before stopping servers.
avahi: Only convert single string at a time in helper