Translate bubbles with IME

* When IME appears, translate the expanded state + row of bubbles into
  correct position
* Moves the logic to apply the forwarded insets into BubbleStackView;
  also applies the insets after all the animation / translation
* Don't update the height of the expanded view when the IME is visible
  (this causes config change which loses IME -- instead we'll update the
  height when IME goes away
* Clears out the insets when the view goes away

What's left to do: if the expanded view is too big the top portion of
it gets shifted off screen, along with the header, this should actually
be clipped + header should be visible; this will come in follow up

Test: manual - have a bubble that uses IME, focus the IME
               => note the row of bubbles + expanded state animate up
             - have multple bubbles of small, medium, large all that
               focus the IME, expand and tap between them while focusing
               the IME
               => make sure things move to the right places
             - via BubbleSettings apk, toggle 'show bubbles at top', have
               some very large bubbles that focus IME, tap between them
               and focus IME, then tap between them without focusing
               => make sure the inset doesn't remain
             - have a bubble that uses IME, open it + focus the IME, update
               its height
               => note that the height doesn't change, once IME goes
                  away height is updated

Fixes: 128007159
Bug: 123544535
Change-Id: I8d613370d46e85f2779069f9c321e88f96a4ff36
3 files changed