[LayoutNG] Make NGLayoutResult, NGConstraintSpace immutable.

This fixes the shared exclusion space which was being passed around a
block formatting context.

Instead of sharing currently it includes the NGExclusionSpace copy
constructor. This isn't optimal, but correct at the moment. We can
speed this up by override the NGExclusionSpace copy constructor to
share a backing vector + index into that vector.

The last bit to fix up is inside NGLineBreaker to rewind over floats.

The next followup will be constifying NGConstraintSpace everywhere.

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