DragController manage the scene transitions, when active

This refactoring removes the currentSource and eliminates the caller's
need to be aware of it.

Instead, we introduce a onDragStarted method that returns the
DragController.

The DragController provides control over the transition between two
scenes through the onDrag and onStop methods.

One of the goals of this refactor is to be able to remove the source
that indicates whether a gesture can be consumed.
The DragController can check whether it is currently driving the
transition without knowing what the source is, for example the
`SceneGestureHandlerTest.startNestedScrollWhileDragging()` test).

Test: atest DragHandlerImplTest
Bug: 317063114
Flag: NA
Change-Id: I9496e1f52643576cee873c2ddee861c265cafa6a
8 files changed