Refactor removeApp and removeTask for last removals.

Move app token removal to the AppWindowToken class so cleanup can
be done locally. Move task removal to the Task class so cleanup can
be done locally. Call task removal when the last app is removed.
Merge actions done prior to method calls into methods.

Fixes bug 18088522 item #12.

Change-Id: I5ce85d2bb309ceb82bd7404e27a56a7c31cd7359
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 45d0921..e3b53b0 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -329,15 +329,9 @@
                     for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
                         AppWindowToken wtoken = tokens.get(tokenNdx);
                         if (wtoken.mIsExiting) {
-                            stack.mExitingAppTokens.remove(wtoken);
-                            wtoken.mIsExiting = false;
-                            mService.removeAppFromTaskLocked(wtoken);
+                            wtoken.removeAppFromTaskLocked();
                         }
                     }
-                    if (task.mDeferRemoval) {
-                        task.mDeferRemoval = false;
-                        mService.removeTaskLocked(task);
-                    }
                 }
             }
         }