Transfer starting windows more aggressively

We currently transfer starting windows when starting another
activity on top of the previous one. However, that's not enough:

Sometimes we also need to transfer back in case the one on top
finishes itself/gets hidden for other reasons.

This fixes an issue where some animations are aborted in the
middle of the animation because the trampoline activity contained
the starting window but then the trampoline activity was finished.

Test: go/wm-smoke
Test: Open Drive, Reopen Drive 100x
Test: Open Hangouts, Receive notification, open it, reopen
hangouts from launcher 100x
Test: AppWindowContainerControllerTests
Bug: 72301120

Change-Id: I6711ce0bc35de430aac03f7b8b39ceac26e595e7
4 files changed