Add DevicePostureController for WMShell

This can be used for WMShell component who is interested in the foldable
state, such as OPEN / CLOSE / HALF_OPEN.

When device is in HALF_OPEN state, one can use the rotation state to
further differentiate tabletop (horizontal fold) or book (vertical fold)
posture.

See also:
https://developer.android.com/guide/topics/large-screens/learn-about-foldables#foldable_postures

Bug: 260871991
Test: atest WMShellUnitTests:DevicePostureControllerTest
Change-Id: I8fd7c0e296db4abbddbd9131bf18bd541b7b9944
3 files changed