Fix double system back press with postponed Fragment container

Previously we identify system back press by tracking `transitionInProgress`. When popping a fragment where the incoming fragment has postponeEnterTransition, the outgoing fragment has a delayed completion and stays in transition longer. If this postponed incoming fragment is also popped at the same time (a double pop back to back), it will not get popped from NavController backstack by virtue of the previous outgoing entry still in transition.

Now we keep track of expected operations from FragmentManager by tracking entries that are already pushed/popped by NavController. We identify a system back press if we get a FragmentManager callback that we did not expect.

Test: ./gradlew navigation:navigation-fragment:cC
Bug: 289877514
Relnote: "Fixed issue where system back press results in incorrect currentDestination. Now the currentDestination correctly reflects the displayed Fragment after system back press."
Change-Id: Id0d6ca28ac2e6c8521784bf0bf569efee7a862dc
2 files changed