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

Conflicts:
	packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

(cherry picked from commit 388ffe0eb72306e012be903ed6e50119f99d0451)
Add getThemedResourcesForApplicationAsUser()

Change-Id: I90b7cb441e4056f59b7260ffa55e31eba644e25a
(cherry picked from commit c55dc0d364b5fe2fb12ce534b3b02dcaa05d1748)
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
(cherry picked from commit 9b0516922377fee35885f9d566d4d458236c782a)
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
(cherry picked from commit ed68f067b8bb0d61cb4b4f584ee7f8fccdcca24f)
Themes: Add icon previews to ThemesContract

Change-Id: Icbfbee3404702a29881ad4933721d8beb39bef30
(cherry picked from commit abf2630dd37d048370dd13c90d6e87b647731331)
BaseStatusBar: Dismiss heads up on backpress.

Change-Id: I5b6191657cf0b74d825eb653a6e82c33e0527aad
(cherry picked from commit a2cee1a63664f0b1b59a8b42e8617aba750c65cd)
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

Conflicts:

	packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
	packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

(cherry picked from commit f7cf75eb4aac49ef07c2deb1f232ff5755af5dbb)
SystemUI: add left and right virtual buttons while typing

Change-Id: Iea446443d33ff305765e47c86523b619676116ac

Conflicts:

	packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java

(cherry picked from commit 427d2cc23104b13a66e3d768979dfffdef213d53)