[LayoutNG] Implement positioning list-item markers

This patch implements major parts of positioning list-item markers.

1. Marker box creation is changed to better match to the spec and
   for more compatible layout.
   a. 'inside' position creates inline marker box[1].
   b. 'outside' position creates inline block marker box. Out-of-
      flow position looks more reasonable, but crbug.com/734554
      is blocking.
2. LayoutListMarker exposes the existing margin logic to share with
   LayoutNG.
3. Add new kListMarker NGInlineItem type.
4. NGLineBreaker and NGInlineLayoutAlgorithm support kListMarker.

Remaining work:
1. Image is not supported yet.
2. Symbols (e.g., bullets) should use pre-defined font and heuristic
   width.
3. Block children is not supported yet. The idea was to wrap them
   with inline block, but the concern is an inline block is not
   breakable in the current LayoutNG.
4. Due to 3, nested lists do not render correctly.
5. Re-numbering is incorrect in some cases.
6. The marker inline block breaks editing lists. See 1.b above.

[1] https://drafts.csswg.org/css2/generate.html#propdef-list-style-position

Bug: 636993
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I37995f53b5897bb161c54660bb13aaf24339a9a3
Reviewed-on: https://chromium-review.googlesource.com/697027
Reviewed-by: Emil A Eklund <eae@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506884}
18 files changed