[LayoutNG] Support objects that are opaque to whitespace collapsing

This patch changes following objects opaque to whitespace collapsing;
i.e., spaces before such objects and after can collapse.
- Out-of-flow objects (floats, absolute positioned objects.)
- Open/close tags.
- Bidi controls.

The ability (AppendAsOpaqueToSpaceCollapsing) originally existed and
used for bidi controls, but removed in [1] due to lack of spec and
tests. Above cases were tested in 4 browsers and re-implemented to be
interoperable.

This patch also stops injecting Object Replacement Character for OOF
objects. This is not specified, and was not possible before, but
0-length item was supported for open/close tags, and this behavior is
interopeable with Blink/Edge/WebKit.

[1] https://codereview.chromium.org/2749013003

BUG=636993, 733609

Review-Url: https://codereview.chromium.org/2951213005
Cr-Commit-Position: refs/heads/master@{#482152}
7 files changed