ao_coreaudio: use description-based layouts internally

CoreAudio supports 3 kinds of layout: 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.
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: fix waveext extensions speaker mapping

The previous code used the mpv generated channel bitmap to create an
AudioChannelLayout on the fly. This worked only with waveext bitmaps and
didn't support mapping channels from waveext unofficial extensions.
ao_coreaudio: print an error when channel mapping fails
ao_coreaudio: simplify layout conversion code

When converting from AudioChannelLayout to mp_chmap the previous code always
used a channel bitmap as an intermediary representation.

With the new code we just create the mp_chmap directly which allows to remove
some code that was used to deal with bitmaps.
ao_coreaudio: don't silently default to using waveext

This will make fringe and broken configurations not work and print an error
instead of silently working around them.