[LayoutNG] Handle 'auto' for new formatting contexts within a BFC.

This implements our current behaviour for 'auto' sized FCs within a BFC.

We need to perform layout twice under two scenarios:
 1. 'auto' inline size child. In this case we need to perform layout
    once, and if the child doesn't fit, we perform layout a second time
    with an "open" layout opportunity, so we can guarantee it will fit.

 2. Non-adjoining margin strut and unpositioned floats/current layout.
    In this case we need to perform a relayout as the BFCOffset where
    floats will be positioned will change. This happens if the child
    doesn't fit on the "top" of the exclusion space.

This also adds more TODOs everywhere which we can handle later.
I kept this as small as possible to keep sanity. :)

Bug: 635619
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I499dc9722fac47f43694f35c507e9d2742d317db
Reviewed-on: https://chromium-review.googlesource.com/680176
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506963}
8 files changed