Expose InlineTextBoxes in the accessibility tree.

The goal here is for the serialized accessibility tree exposed by
Blink to have enough information that the embedder can compute the
bounding rectangle for an arbitrary text range, and determine the
word that any given character offset belongs to. Supporting text with
rotations or 3-D transforms is a non-goal.

This will enable us to complete the implementation of native accessibility
APIs that request the bounding box of text ranges, and make it possible to
enable software like ZoomText to highlight individual words on a webpage as
they're spoken.

Previously, accessibility objects with a role of StaticText would be
leaf nodes. Now we expose all of the InlineTextBoxes within that object
using a new type, AccessibilityInlineTextBox, and furthermore we expose
the pixel offset of each character within the inline text box, and the
start and end position of all words within each inline text box. Every
InlineTextBox has a single direction - right, left, up, or down.

This change also makes it more efficient to update the accessibility tree
when the user is editing a large textarea or contenteditable. Previously,
the entire contents had to be updated every time. Now typically only the
InlineTextBoxes corresponding to the current paragraph need to change.

Making this change would break some Chromium tests, so we add a new flag
to enable this new functionality. Once Chromium has been updated to depend
on having inline text boxes in the accessibility tree, we can remove the
flag.

BUG=98977

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

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