chmap_sel: add channel replacement for sl/sr <-> sdl/sdr

This can be use useful for the 7.1 rear layout. In particular it looks like
OS X likes to use sdl/sdr as opposed to sl/sr.
ao_coreaudio: pass layout by reference to logging function

Apparently passing the struct by value somehow messed with the value of some
fields.
ao_coreaudio: use description-based channel layouts

CoreAudio supports 3 kinds of layouts: bitmap based, tag based, and speaker
description based (using either channel labels or positional data).

Previously we tried to convert everything to bitmap based channel layouts,
but it turns out description based ones are the most generic and there are
built-in CoreAudio APIs to perform the conversion in this direction.

Moreover description based layouts support waveext extensions (like SDL and
SDR), and are easier to map to mp_chmaps.
ao_coreaudio: print an error when channel mapping fails
ao_coreaudio: cosmetic change of loop ending condition
ao_coreaudio: don't fallback to full waveext

The code was falling back to the full waveext chmap_sel when less than 2
channels were detected. This new code is slightly more correct since it only
fills the chmap_sel with the stereo or mono chmap in the fallback case.
ao_coreaudio: remove useless code

This code doesn't actually makes much of a difference, and the AudioUnit
mostly wants layout tags anyway.
ao_coreaudio: skip unknown channel labels

I don't think this is really a very good idea because it is conceptually
incorrect but other prominent multimedia programs use this approach
(VLC and xbmc), and it seems to make the conversion more robust in certain
cases.

For example it has been reported, that configuring a receiver that can output
7.1 to output 5.1, will make CoreAudio report 8 channel descriptions, and the
last 2 descriptions will be tagged kAudioChannelLabel_Unknown.

Fixes #737