Let FrameSelection::localCaretRect on a text input field avoid synchronous  
layout. 

We use VisiblePosition canonicalize to know where to draw a caret.
However if selection is on a text input, we need concern just whether the text 
input is visible or not.
It means we can change VisiblePosition to PositionWithAffinity.

Source/core/editing/Caret.cpp/h:
- Add a override method of updateCaretRect using PositionWithAffinity.

Source/core/editing/FrameSelection.cpp:
- if selection is on a TextFormControl, use the updateCaretRect function.

Source/core/editing/PositionWithAffinity.h, VisiblePosition.h:
- Move the localCaretRect function to PositionWithAffinity. It uses position and 
affinity so moving is straightforward.

Source/core/html/HTMLTextFormControlElementTest.cpp:
- Add a test to confirm FrameSelection::localCaretRect not to cause layout.

BUG=382809
TEST=HTMLTextFormControlElementTest.cpp

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

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