Implement UX for IME with freeform windows

UX desires for this are: when IME appears for a freeform window,
1. Temporarily push the freeform window up to make room for IME
1a. However, do not push the top of the window off the screen
2. Any part of the window left under the IME becomes inset and
   thus handled by adjustPan or adjustResize.
3. Return the window to its original position when IME closes.
3a. Unless the window is moved while IME is up.
4. If the window is moved around while IME is up, do not change
   the content (ie. don't adjust insets).

This CL includes some fixes to related bugs as well:
- During adjustPan, the caption is now "unscrolled" so that
  it remains at the top of the window. Previously, the caption
  would be scrolled out of the window along with the content.
  This is done via setTranslation so it won't trigger relayout.
- The starting bounds of task-drag uses the task bounds instead
  of dim bounds. Dim bounds was based on the visible frame
  which excludes the IME inset; so, it was causing the window
  to be resized if the user tried to drag the window while IME
  was open. Going through the history, this was done to resolve
  some issue with resizing dialog activities. I've verified
  that behavior in this case is the same before and after this
  CL.

Bug: 119375946
Test: Manual since UX: open desktop display, open apps that
      use IME (both adjustPan and adjustResize).
      Also, atest WindowFrameTests
Change-Id: Id81d0b0a5f82be28fabed3ad22e713fc4fa7536d
5 files changed