framework: Add advanced reboot options (2 of 2)

This commit is an squash of the commits below and re-adds the reboot
logic to CM.

I took the liberty to rewrite some of the ShutdownThread code because
it had some lingering issues present since I originally wrote this
for CM7 (!!). Namely, the reboot reason was being changed when the items
are pressed instead of when the user presses the positive button. This
made some people add workarounds like handling back button presses and
whatnot, these are gone now.

commit 588464bea40b92b04c4aeee35c47f7becceeed56
Author: Roman Birg <roman@cyngn.com>
Date:   Thu Jul 10 14:20:42 2014 -0700

    advanced reboot: add soft reboot option

    Adds a "Soft reboot" option which restarts zygote, as requested in JIRA
    CYAN-3998

    Change-Id: Ia6e5ed9b053e1c5ebd1fc55e5692858b97f7e0fc
    Signed-off-by: Roman Birg <roman@cyngn.com>

    Conflicts:
        core/res/res/values/cm_arrays.xml
        core/res/res/values/cm_strings.xml
        services/java/com/android/server/power/ShutdownThread.java

commit 3e7b92551bbf818ace41cd9b9532473ed7d18f2f
Author: Veeti Paananen <veeti.paananen@rojekti.fi>
Date:   Tue Jul 23 16:34:35 2013 +0300

    Show advanced reboot if using an insecure lock screen

    Enables the advanced reboot menu when locked if the selected lock method
    is insecure (= slide unlock).

    Change-Id: I759b7b31c5411597e2537a85183d73ec02eb2461

    Conflicts:
        services/java/com/android/server/power/ShutdownThread.java

commit cf42ed3993d5d05c9b2591883fefb6338fbcdd40
Author: DvTonder <david.vantonder@gmail.com>
Date:   Thu Feb 21 18:20:01 2013 -0500

    Framework: Show the Advanced reboot menu only for the primary user

    Change-Id: I73f82eade26f268e2b4608fa23cabcf0bb8fc862

    Conflicts:
        services/java/com/android/server/power/ShutdownThread.java

commit 08aa6fd643e0359114b86f50053921dd2d86fc50
Author: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
Date:   Mon Nov 4 03:37:40 2013 +0000

    Framework: Add Advanced reboot (2 of 2)

    This commit responds to a setting in Development settings for including
    options in the power menu for rebooting into recovery or bootloader. It
    is defauled to off.

    When enabled, the Advanced reboot options will only be available once the
    device is unlocked.

Change-Id: I2bc1e7024abb69cb62154d3081df5a3eb7e79df9