Refactor WidthIterator.

This is the second part of https://codereview.chromium.org/383203002/.
No functional changes, just code re-org for readability:

* split advanceInternal() into logical bits.
* introduce a private CharacterData struct for text iterator data
  handling.
* stop second-guessing compiler inlining decisions

BUG=393279
R=jbroman@chromium.org,schenney@chromium.org,eae@chromium.org

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

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