Let HTMLTextFormElement.setSelectionRange with same values avoid layout.

HTMLTextFormElement.setSelectionRange creates VisiblePosition from |start| and 
|end| and calls FrameSelection::setSelection to set Selection.
VisiblePosition causes synchronous layout.
However we implement text field as a shadow element including only div and text 
nodes. 
This means we can set Selection without VisiblePosition.

Source/core/editing/FrameSelection.cpp/h:
- Add localCaretRectWithoutUpdateForTesting(), which returns base's same 
function. 
This looks strange but FrameSelection inherits privately CaretBase.

Source/core/html/HTMLTextFormControlElement.cpp:
- Introduce positionForIndex and indexForPosition functions converting Position
from/to index.
- Change setSelectionRange to use them.
- Limit |max| to text length. This is an update from the reverted one.

Source/core/html/HTMLTextFormControlElementTest.cpp:
- Add the SetSameSelectionRangeDoesNotCauseLayout test.


This cl includes the porting from rniwa@apple.com's changes on WebKit: 
https://bugs.webkit.org/show_bug.cgi?id=128478 
https://bugs.webkit.org/show_bug.cgi?id=128806 

This cl is a retry of the reverted one:
https://codereview.chromium.org/434473005/
This cl updates HTMLTextFormConrolElement::setSelectionRange.

BUG=382809, 397303
TEST=HTMLTextFormControlElementTest.cpp, LayoutTests/fast/forms/input-tab-shows-
caret.html, textarea-select.html

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

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