Let FrameSelection remember the last Range set by Range.addRange().

This patch fixes a long-standing editing bug that a Range object returned by
Selection.getRangeAt() may not be equivalent to the Range used to set selection
with Range.addRange().

Core strategy of this patch is to cache the Range object previously set
by Range.addRange() in FrameSelection. The cached Range will be discarded
when the underlying VisualSelection object changes.

BUG=346613

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

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