Use rotation transition to handle display config change

1. Support fade animation with rotation delta 0.
   Rotation animation is also used to cover display configuration
   change, e.g. density, font size.
2. Use normal rotation animation when app requests orientation,
   e.g. from Activity#setRequestedOrientation.
3. Fix flickering of rotation animation
   The layers are:
     Transition Root
       - Animation leash
         - RotationLayer
       - Windowing layer
   So the higher layer should be leash instead of RotationLayer.

Bug: 199836343
Test: ShellTransitionTests
Test: setprop persist.debug.shell_transit 1; reboot
      Change font size in Settings, there should be a fade
      out animation for transiting to new configuration.
      Toggle portrait and landscape from app without specifying
      rotation animation type, seamless rotation should not
      be used.

Change-Id: I7ec9553cc8df2b98f89b6fbda67c3834d018883b
9 files changed