[LayoutNG] Refactor NGLineBreaker for ShapingLineBreaker

This patch refactors NGLineBreaker to match to the interface
ShapingLineBreaker provides.

This patch uses a mock of ShapingLineBreaker so that we can test
NGLineBreaker and ShapingLineBreaker independently. Integrating
ShapingLineBreaker will be after NGLineBreaker was stabilized.

This patch also changes the relationship of NGLineBreaker and
NGInlineLayoutAlgorithm. Measuring logic is moved to NGLineBreaker,
while NGInlineLayoutAlgorithm focuses on placing items and building line
boxes.

BUG=636993, 719615
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_layout_ng

Review-Url: https://codereview.chromium.org/2871733003
Cr-Commit-Position: refs/heads/master@{#471986}
12 files changed