Don't use three different coordinate systems in getSelectionRect()

The main code path in getSelectionRect() returns document coordinates
(through get{Start,End}DocumentPos()), but the fallback code path
added in fc09114 returns client coordinates (through getClientRect()).
Moreover, the focusableNode code path returns surface coordinates.

Callers were rightly assuming that the return value would always
be in document coordinates (or at least always in the same coordinate
system!), so the edge cases in which we used different coordinate
systems broke things.

Document this function as returning document coordinates, and
make this true by converting coordinates from other systems.

Bug: 69122
Change-Id: If7711efc6aad260b7dd75a4f7f0bddb4efaf6553
Only focus the paste target if focusedNode has changed

in the view despite the model selection not changing, but this appears
to not/no longer be the case.

Restoring the check for next !== previous allows us to remove the hack
where we don't call onModelSelect while staging, which was breaking
the link inspector.

Bug: 70356
Change-Id: I22fae52d358db642827ead1af21e154f0e019735
Merge "Don't use three different coordinate systems in getSelectionRect()"