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
15 files changed