hal: Support for anc/aanc/proxy audio features

Added support for  anc/aanc/proxy audio features

Change-Id: Id6ebdb9094635563cfafce9dc1d3449efe25bda4
hal: Support for usb audio features

Added support for usb audio feature and
related proxy device support

Change-Id: Ia64e9eff20fbbada6f08795686cdbc0ba462bafb
hal: Fix audio playback issue on USB headset

- Start music playback on USB headset. The playback is stopped
  after 3sec.
- A touch tone is played through low latency output path,  while
  selecting the song in the music app. This output goes to standy
  after 3sec. So the disable_snd_device() is called to reduce the
  ref count on usb headset device by 1. At this point the music
  playback (deep-buffer path) is still active. But the current
  implementation has uncondtionally calls usb_stop_playback()
  which results music playback to stop.
- Fix by ensuring the usb_stop_playback is called only when the
  device ref count goes to 0.
- Fix related minor stabilty issues

Change-Id: I979423458738e68da45973751cd918d4c1a924ea
CRs-Fixed: 572048
hal: USB audio support for msm8960

Change-Id: Ib3229c44056daa0bfcbdb6b14d9f93b374951930
hal: Fix issues with USB audio after disconnect

 * Stop the USB audio thread when the refcnt goes to zero.
 * Fix tracking of multiple soundcards.

Change-Id: Ia24dbcfcbcc855cde32c57dbbeb6d07af8f4cce8
hal: Correct the multi-channel output usecase selection

Both Multi-channel output on HDMI and Compress offload playback on
HDMI use cases request for a stream with AUDIO_OUTPUT_FLAG_DIRECT.
The current logic would then result selection MULTI_CH usecase.
Fix this by checking for complete match of flags to select the
use case.

Change-Id: I66df94af6c3b837a6c8054282364e1acf78e6e0f
hal: fix channel mask for m-ch offload playback

- Update channel mask with compress parameters for
  compress offload playback on HDMI device

Change-Id: I89263f56923588fcb906facfd4ae9ebf95203743