bluez5: add hardware volume support
Add necessary apis to bluez transport.
Hardware volume is determined by the maximum value in channelVolumes array on card, maximum volume on node (software volume) is always set to 1.0f or larger.
Add A2DP(AVRCP) absolute volume support. Source volume can only update to adapter node but not from due to AG nodes don't have route.
Since A2DP/HSP/HFP volume is already percentage itself, it has been mapped to pulseaudio volume then converting to linear volume.
bluez5: add HSP/HFP hardware volume support
Only native backend is fulfilled.
Based on @pvir's prior work, although many parts are quite different now.
- Use Android phone as source device, sometimes it ignores volume set from PW, causing volume out of sync with slider on phone.
- Sink volume can't be restored, it prefers volume from remote device.
- More tests on HFP/HSP AG devices and others.
- Add property to toggle hardware volume support.