Revert of HTMLTextFormElement.setSelectionRange should not trigger a synchronous layout. (https://codereview.chromium.org/370973003/)

Reason for revert:
Looks like this causes webkit_unit_tests to start failing:
http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Android%20%28Nexus4%29/builds/17287

[  FAILED  ] HTMLTextFormControlElementTest.SetSelectionRangeDoesNotCauseLayout

TBR=yoichio@chromium.org,tkent@chromium.org
NOTRY=true

Original issue's description:
> HTMLTextFormElement.setSelectionRange should not trigger a synchronous 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.
> - If selection is on a textfield, we can avoid layout and visible validation.
> 
> Source/core/html/HTMLTextFormControlElement.cpp:
> - Introduce positionForIndex and indexForPosition functions converting Position
> from/to index.
> - Change setSelectionRange to use them.
> 
> Source/core/html/HTMLTextFormControlElementTest.cpp:
> - Introduce the SetSelectionRangeDoesNotCauseLayout 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 
> BUG=382809,397303
> TEST=HTMLTextFormControlElementTest.cpp
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=179208

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

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