Improve DreamService testability.

This changelist refactors DreamService and associated classes to be
more amenable to testing. A significant change is the introduction of
a dependency injector, allowing test code to have more control over
the DreamService environment.

TestDreamEnvironment has been introduced to provide a scoped space for
interacting with DreamService. It allows tests to control moving through
the dream phases.

Bug: 334083490
Flag: N/A
Test: atest DreamServiceTest#testCreate
Test: atest DreamServiceTest#testBind
Test: atest DreamServiceTest#testDreamActivityCreate
Test: atest DreamServiceTest#testStart
Test: atest DreamServiceTest#testWake
Change-Id: I8720c1994ec638559fcd6505588b8f686b5b477e
7 files changed