Modify config to support app specific themes [1/4]

Summary of Changes
1. The configuration now supports each app to have their own theme.
Each theme can include icons, styles (ie overlays) and font.

2. The theme config is serialized into a json string and stored
in secure settings.  This entry consolidates what was previously 3 separate
keys (style, icon, font) into a single field.

3. 'CustomTheme' was renamed to 'ThemeConfiguration'.

Note: This commit is for the configuration. Additional work needs to be done to
the framework and UI to support app specific themes.

Change-Id: I6f72f542829578201c57c54786456486f6a6e2e3
Support theming navbar separately from SystemUI

This allows using a different theme for the navbar than the theme
applied to the rest of SystemUI.  This will not affect theming until
we have the front end in place that allows users to change this.

Change-Id: I3ad4e8774ac69d1e6e1d83fa5e1ffe59b977d4e9
Add getThemedResourcesForApplicationAsUser()

Change-Id: I90b7cb441e4056f59b7260ffa55e31eba644e25a
Allow specifying a theme when creating a Context

A Context normally loads the resources associated with the given
package that this context is for.  This patch allows us to specify
a theme we want attached to a given context's resources.

Change-Id: I1e619f038566233bd89ee96eb8eb87fa6894e630
Use systemui's applied theme for notifications.

Notifications contain RemoteViews which are inflated using the
application's context for which this notification belongs to.  This
can look out of place if SystemUI is using a different theme than the
rest of the system.

This patch will use SystemUIs theme when inflating the RemoteViews,
giving us a more consistent look in the notification drawer.

Change-Id: I9514ce7fcc4858bad3d3c4190f55c1f5a1441d7c
Themes: Add icon previews to ThemesContract

Change-Id: Icbfbee3404702a29881ad4933721d8beb39bef30
BaseStatusBar: Dismiss heads up on backpress.

Change-Id: I5b6191657cf0b74d825eb653a6e82c33e0527aad
SystemUI: add left and right virtual buttons while typing

Change-Id: Iea446443d33ff305765e47c86523b619676116ac
Fix translatability of External media format message

Change-Id: I10c76ff40012f982fd7b75ac383ad29a6e698179
SystemUI: fix up navigation cursor keyevent flags

Volume cursor controls use slightly different flags to keep the cursor
within the field. Match them in the SystemUI for consistent (and better)
behavior.

Change-Id: I56d597f111ec611b0ca24a10f30575401fa76d18
Signed-off-by: Roman Birg <roman@cyngn.com>
MountService: Check for null pointer when looking for vold code

* There is actually no code path that will set an event into
  NativeDaemonConnectorException, so any reference to the event code
  will result in a null pointer exception, taking down MountService and
  the rest of the system with it.

Change-Id: Id62f724953aacc363b3455584c6a3ad1381c6138
Revert "listview: ensure active views are filled prior than scrap views"

This reverts commit 830a0024f1de9655d50c703ed1d10a81005db40e.

See http://review.cyanogenmod.org/#/c/67348/

Change-Id: I066e6ee8d9dc478c752ecfa161fd638bce7cee40
SystemUI: fix up initial cursor down flags on nav bar

We were using the regular flags for the initial ACTION_DOWN event so the
FLAG_KEEP_TOUCH_MODE was not being passed and allowed the cursor to jump
out of bounds slightly.

Change-Id: I5b4d2a5e5e0ce562985fcc3b7b6fac8b4abc49da
Signed-off-by: Roman Birg <roman@cyngn.com>
SystemUI: fix nav bar layout while toggling cursor keys with an IME up

Previously there was no option to have the IME up on that settings
screen so this was not a concern before; however, with the addition of
searchable settings, it seems users are now trying to toggle it with the
IME active, putting the nav bar in a strange state becuase it did not
restore the previous states properly.

Change-Id: Ib03ff3d9ee9679819eaa42644796e8f9eae6e694
Signed-off-by: Roman Birg <roman@cyngn.com>
Merge remote-tracking branch 'cm/cm-11.0' into cm-11.0-sgt7