Move some things around to make it easier to merge in changes.
Add a set_soft_volume/mute event. If we can't configure the hardware volume completely, notify the remainder with the soft_volume/mute events.
libacp is a port and wrapper around the pulseaudio card profile code. It uses a set of templates for construct a card profile and mixer port settings. It also has support for UCM when available for the hardware.