Improve NSSL `start` positioning for Dual Shade & Connected Displays.

So far, NSSL's start edge was positioned either at the beginning of the
screen (single shade) or at the half-width (split shade). Dual Shade
requires more fine-grained positioning, tied to the width of the shade
itself; the NSSL should be full-width on narrow screens, and a smaller
portion of the screen (either fixed size or a percentage) on wider
screens.

Summary of changes in this CL:

1. Define dual shade dimens in resource configuration files, instead of
   code constants. The final values for each config are still TBD, but
   the tentative spec is:
   * Pixel portrait/landscape: 412dp
   * Folded foldable portrait/landscape: 412dp
   * Unfolded foldable portrait/landscape: 392dp
   * Tablet portrait/landscape: 474dp

2. Replace `useSplitShade` with `horizontalPosition`. For unflagged
   code, this is a mechanical refactor where `useSplitShade == true`
   is equivalent to
   `horizontalPosition is HorizontalPosition.MiddleToEdge`. I added
   dedicated unit test cases to verify this.

3. Change the guideline percentage to match the ratio specified in
   `HorizontalPosition.MiddleToEdge`. This is still 50% at the moment,
   but will likely change soon for some Dual Shade configurations.

4. Under `HorizontalPosition.FloatAtEnd` (only enabled in SceneContainer
   and DualShade), do not constrain the NSSL start edge and instead
   constrain the width. This achieves a fixed-width, end-aligned panel.

Bug: 338033836
Flag: com.android.systemui.scene_container
Test: Verified manually by observing that notifications placement is
 unaffected on SceneContainer mode without dual shade, and narrower than
 half-screen when dual shade is enabled.
Test: Added unit tests.
Test: Existing unit tests still pass.

Change-Id: Ia2b03a3c0376c8490e15c8238ecd89a2eb7dae4f
9 files changed