Forward port Volume panel style and Linked volumes

Original author ptunstal
AudioService: Don't adjust volume when vol-downing to vibrate or silent

Pressing vol-down to vibrate or silent would (previously) still adjust the
stream volume, setting the last audible volume to 0, which is not allowed
for voice-capable devices.  Thus, the last audible volume would reset to
default on reboot if on vibrate/silent or the lowest volume setting.

By not adjusting volume when vol-downing to vibrate or silent on
voice-capable devices, the last audible volume is always preserved across
reboot.
Option to use volume keys to control media volume anytime (2/2)

See Settings part for description

Conflicts:

	core/java/android/provider/Settings.java
	media/java/android/media/AudioService.java
Fix wrong typo (remove else if valid only in cm)
AudioService: Restore volumes after boot and when a headset is plugged

The correct volume levels for <device>_speaker and <device>_headset are not
restored after booting and when a headset device is plugged in or out.
This fixes a glitch where the first volume change event causes the volume to
be reset to the last stored value instead of increasing/decreasting it by
one step.

Signed-off-by: maxwen <max.weninger@gmail.com>

Conflicts:

	media/java/android/media/AudioService.java
Fix code alignment

Conflicts:

	media/java/android/media/AudioService.java
AudioService: Remove STREAM_NOTIFICATION from ringer mode streams

Change-Id: Ie8d25743b27839fa2bd4e9ae5d3d0a49410ac5b4
JIRA: CYAN-344
Issue: https://jira.cyanogenmod.org/browse/CYAN-344
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>