Redesign vibration settings.

Under the hood there remain three axes:
 1. Are we in silent mode now?      | RINGER_MODE_{VIBRATE,SILENT}
 2. Do we vibrate in silent mode?   | VIBRATE_IN_SILENT == 1
 3. Do calls vibrate:     | getVibrateSetting(VIBRATE_TYPE_RINGER)
    - always              |    == VIBRATE_SETTING_ON
    - never               |    == VIBRATE_SETTING_OFF
    - only in silent      |    == VIBRATE_SETTING_ONLY_SILENT

We now expose this to the user much more simply by
collapsing (2) and (3) above, and discarding states that
don't make sense:
  - VIBRATE_SETTING_OFF + VIBRATE_IN_SILENT
  - VIBRATE_SETTING_ONLY_SILENT + !VIBRATE_IN_SILENT

Now we offer the user four choices:

    Phone vibrate:
    * "Never"
        --> VIBRATE_IN_SILENT=0, VIBRATE_SETTING_OFF
    * "Always"
        --> VIBRATE_IN_SILENT=1, VIBRATE_SETTING_ON
    * "Only in silent mode"
        --> VIBRATE_IN_SILENT=1, VIBRATE_SETTING_ONLY_SILENT
    * "Only when not in silent mode"
        --> VIBRATE_IN_SILENT=0, VIBRATE_SETTING_ON

This should make it easier to choose exactly the behavior
the user wants as well as avoid nonsensical combinations of
settings.

Bug: 2598014
Change-Id: I9244d25ec97a3e2b572b71b521049debd22fa4e0
4 files changed