Move selection invalidation to the invalidation phase

https://codereview.chromium.org/620553009 moved some of the
selection-related invalidations to the invalidation phase.
This change fixes the original logic that wasn't totally right.
The core issue is that we have to store the old selection rectangle
as we can't compute it as part of the next frame (all the selection
information have been updated by then).

This change also includes some simplification of the
selection code now that we don't need much of the logic.

BUG=407416

Review URL: https://codereview.chromium.org/665673004

git-svn-id: svn://svn.chromium.org/blink/trunk@184794 bbb929c8-8fbe-4397-9dbb-9b2b20218538