Introduce STLState.currentTransitions: List<TransitionState>

This CL adds the foundation for interruptions in STL: multiple
transitions can now run in parallel. This means that the state is now
either Idle or List<Transition>. However, for backward compatibility,
the old API is preserved and this CL exposes a new currentTransitions
list that can be used by consumers that want to handle interruptions.
For the current callers, STLState.currentTransition still represents the
last/current transition and the behavior is unchanged.

This is mostly a pure refactoring that should not have any impact on
current usages, but there is an important change: transitions now *have
to* call STLState.finishTransition() once they are finished, even if
they are not the last/current transition. This change only impacts
library STL code and not consumer code given that user code is not
supposed to create custom Transitions (yet).

This CL introduces a flag to disable interruptions. This flag is enabled
by default so that the tests cover the new code, but it is explicitly
disabled in current production usages (Flexiglass, Bouncer, Lockscreen,
Communal). It is enabled by default in the STL demo app.

See b/290930950#comment5 for more information about the upcoming
interruptions support.

Bug: 290930950
Test: atest SceneTransitionLayoutStateTest
Test: Ran all STL tests with both values for the interruptions flag
Flag: N/A

Change-Id: Ia6669cc6d305b2f17ee9a805082f0b7bda56f06e
12 files changed