Launcher APIs and broadcasts for managed profiles

UserManager
- Corp badging
- Querying list of managed profiles

Launcher API
- LauncherApps and Service to proxy changes in managed profile
  to the launcher in the primary profile
- Querying and launching launchable apps across profiles

Change-Id: Id8f7b4201afdfb5f414d04156d7b81300119289e
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 8f2adc8..bc7f08e 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -70,6 +70,7 @@
 import com.android.server.notification.NotificationManagerService;
 import com.android.server.os.SchedulingPolicyService;
 import com.android.server.pm.Installer;
+import com.android.server.pm.LauncherAppsService;
 import com.android.server.pm.PackageManagerService;
 import com.android.server.pm.UserManagerService;
 import com.android.server.power.PowerManagerService;
@@ -922,6 +923,14 @@
                     Slog.e(TAG, "Failure starting TrustManagerService", e);
                 }
             }
+
+            try {
+                Slog.i(TAG, "LauncherAppsService");
+                LauncherAppsService las = new LauncherAppsService(context);
+                ServiceManager.addService(Context.LAUNCHER_APPS_SERVICE, las);
+            } catch (Throwable t) {
+                reportWtf("starting LauncherAppsService", t);
+            }
         }
 
         // Before things start rolling, be sure we have decided whether