Fix installing applications from non-primary users.

We also now send the correct broadcasts to each user.

You no longer need to be running the shell as root
to be able to create/remove users.

Also added some more man page material to the pm command, and
got rid of a bunch of showUsage() calls that now make error
messages completely buried because of how large the usage info
has become.

And the package manager now shows the user each historical broadcast
was sent to.

Change-Id: Iab42498e1352a0c023069139c80fc04d2d69ab4b
diff --git a/services/java/com/android/server/pm/PackageSettingBase.java b/services/java/com/android/server/pm/PackageSettingBase.java
index 6d31f0e..d8f7345 100644
--- a/services/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/java/com/android/server/pm/PackageSettingBase.java
@@ -210,17 +210,17 @@
         return false;
     }
 
-    int[] getInstalledUsers(int[] users) {
+    int[] queryInstalledUsers(int[] users, boolean installed) {
         int num = 0;
         for (int user : users) {
-            if (getInstalled(user)) {
+            if (getInstalled(user) == installed) {
                 num++;
             }
         }
         int[] res = new int[num];
         num = 0;
         for (int user : users) {
-            if (getInstalled(user)) {
+            if (getInstalled(user) == installed) {
                 res[num] = user;
                 num++;
             }