[LayoutNG] Initial support for the 'vertical-align' property
This patch supports the 'vertical-align' property.
Positioning based on 'vertial-align' requires, depends on values:
a. Per-element positioning to support nested cases.
b. The layout size of the element.
c. The layout size of the parent element.
d. The layout size of the line box.
This patch adds NGInlineBoxState to keep track of the current inline
box. This is also used to cache information common to a box, similar to
what VerticalPositionCache does in LayoutObject.
Another struct, NGPendingPositions, keeps track of descendants that need
to be positioned when ancestor layout is done. NGInlineBoxState is
expected to be used for other prorperties, while NGPendingPositions may
be only for 'vertical-align'.
This patch passes several tests in CSS2/linebox, but their expected
files use yet to be supported properties such as inline margins or
relative positions that no tests can be marked as pass in