[LayoutNG] Switch NGInlineLayoutAlgorithm to producing lineboxes.

Hurray! Does what it says on the box.

NGInlineLayoutAlgorithm now will produce linebox-by-linebox feeding the
previous break token back into it.

NGBlockLayoutAlgorithm::HandleInfow now has some special logic to deal with
lineboxes, but this is to:
 1) Resolve the BFC offset early, (which we needed to do already for something
    else).
 2) Add positioned floats into the parent fragment.

NGInlineLayoutAlgorithm is simplified a little, there are three major followup
patches which need to be done.
 1) Simplify NGLineBreaker, and separate pass for empty inline with
    unpositioned floats. This will make NGLineBreaker v. simple (hopefully).
 2) Move NGInlineNode::CopyFragmentDataToLayoutBox into NGBlockNode.
 3) Implement a loop inside NGInlineLayoutAlgorithm to check the current layout
    opportunity block-size to see if it'll fit.

I think for speed reasons we'll want NGInlineNode::Layout to be a little special
in mutating the NGInlineBreakToken inplace, (to reduce copies), but this can be
done later.

This tries to keep feature parity with the current code, so there shouldn't
be any major regressions.

Bug: 635619

Change-Id: I04e9d4c454da6efab06286632366d954c6015a92
Reviewed-on: https://chromium-review.googlesource.com/709716
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510727}
24 files changed