Themes: Add '|' delimited list of components to broadcast

Change-Id: I742dcb0f502b6089dee584a92a3792016f2a9799
Themes: Handle apps using "original-package" tag

Before this patch the themes code assumed the pkgName from PackageInfo was equal to the
manifest value. This is not the case however for upgraded system apps that have gone
through a pkg-name change. For example, Trebuchet was "com.android.launcher3" and now
it is "com.cyanogenmod.trebuchet". If the device had wiped data then PM would use the new
pkg-name, but if the system apps were being upgraded then PM would use the old name which is
now different from the manifest name.

Change-Id: Ie7eb1b4e17899d1055535dc890d4f7a7bca9a98a
Make theme change broadcast a protected broadcast.

Change-Id: Ic24c840685d18d133dc73ff2637c041c4775f197
Themes: remove unused code

Change-Id: I5ee8de962c40ddc5fcfbbc0332a9e389223e716c
Themes: Delete icon resources during uninstall

Change-Id: Icf247642f9d246c8826f3394f873e4b434ad2b3f
Cleanup app->{theme1,theme2...} mapping on uninstall

Change-Id: I24b43e8817db1927d5b43fcf7ad3340269d046ea
fw: media: Handle NPE due to threading race

Change-Id: I6eab5bc3d687edfa6f0839e439b3314bed4fdcea
Themes: uninstallThemeForAllApps shouldn't check if map is empty if it's null

Potential NPE introduced in ec2200878706735cdd2caf4d934d988296998e85

Change-Id: I6d1ec165957c2be63086a18af2236e46978e9c8a
Don't cleanup overlay mapping for non-theme apps

mOverlay structure should keep all app/theme mappings even
if the app does not exist. Otherwise we will have to insert back the mapping
for every app that is installed which would be time consuming.

Without this patch an upgrade app loses its applied theme
until the device is rebooted.

Change-Id: Id02b8e0a3bdd78d1a9d39cd38294c584ef95f8db