KeyguardBottomAreaView new impl. - data layer

- In this first CL in the series, we create the data layer that will power
the new implementation of KeyguardBottomAreaView
- On its own, this CL doesn't do anything and nothing is using it
- The data layer contains both the repositories and models
- There are two repositories:
  - The generic KeyguardRepository is responsible for providing generic
    application state that the view will ultimately consume. Note that
    some states are very specific to the bottom area and/or the view -
    this was done mostly as a shortcut because the current codebase
    makes it intractable to trace the true source of truth for these.
    Later, when things get cleaned up across the codebase, the
    repository can be changed to source the state from the real source
    of truth without making changes to its consumers
  - The specific KeyguardQuickAffordanceRepository is responsible for
    providing "quick affordance" (previously known as "bottom button")
    state. It creates a simple framework for defining the configuration
    for each of these buttons, positioning them on the left/right, and
    deciding which one takes precedence when more than on is available
    at the same position on the screen

Bug: 235403546
Test: Unit tests are included for both repositories and for two out of
the three quick affordance data sources. It was not possible to add a
unit test for the "home controls" data source because of my use of
`combine` which seems to not play nice with test coroutine scopes. I
also manually verified that the bottom area behaves as expected once the
entire CL chain is compiled together

Change-Id: I90f8ccf0233c8a089b564a831f14157bf2096c31
27 files changed