Remove AppWindowTokens from exiting apps with task

When the task is removed from a task stack in window manager any
exiting activities left in the stack were orphaned. This led to a
memory leak. Removing all task activities from those that are exiting
fixes this problem.

Fixes bug 18943737.

Change-Id: I0a5ea8d2d3be89af7ccaf01385a226a2eafdf507
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index f859fd2..da25c53 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -304,10 +304,11 @@
             pw.print(prefix); pw.print("inPendingTransaction=");
                     pw.println(inPendingTransaction);
         }
-        if (startingData != null || removed || firstWindowDrawn) {
+        if (startingData != null || removed || firstWindowDrawn || mDeferRemoval) {
             pw.print(prefix); pw.print("startingData="); pw.print(startingData);
                     pw.print(" removed="); pw.print(removed);
-                    pw.print(" firstWindowDrawn="); pw.println(firstWindowDrawn);
+                    pw.print(" firstWindowDrawn="); pw.print(firstWindowDrawn);
+                    pw.print(" mDeferRemoval="); pw.println(mDeferRemoval);
         }
         if (startingWindow != null || startingView != null
                 || startingDisplayed || startingMoved) {