Add CarVolumeService

Things added in this cl:
+ Hook up hardware volume keys to CarVolumeService to directly update
  volume for current audio context.
+ Added volume control apis in AudioManager, and the real implementation
  is done in CarVolumeService
+ The volume updates from car is broadcast to listeners through
  IVolumeController api which is already in framework. SystemUI is using
  this api to listen to volume changes (through AudioManager).
+ Added new permission for volume controls

Main TODOs left:
+ Multi stream playing at the same time. This can be done through
  adjustign software mixer gain on Android side. Utility functions to
  compute the gain is added in VolumeUtils, but it's not used yet in
  CarVolumeService.

+ Hook up with Settings so per stream volume can be persisted across
  multiple boots.

Bug: 27595951

Change-Id: I3a63e423d4e0a347215af65e79926212e4503d1b
(cherry picked from commit c4d442f4a0d3acf90b1c7a1dd7c222a8f32a193f)
15 files changed