Move margin handling and layoutBlockChild to RenderBlockFlow

Cribbed from webkit.org/b/121049

Continuing the work to move Block Flow layout out of RenderBlock
(the root for all kinds of block layout) and into RenderBlockFlow.
This change moves margin collapsing, which only applies to block
flow layout. I also moved MarginInfo's definintion from being
in the header to RenderBlockFlow.cpp, as it's only used by
internal functions.

All functions that return MarginValues or MarginInfo were moved
as part of this patch, and layoutBlockChild, which handles
margin collapse. Margin code was also tightened where possible
to look for RenderBlockFlow instead of RenderBlock.

This patch also created a RenderBlockFlowRareData internal class
that currently only holds Margin data. The goal is to move all
rare data from RenderBlock to RenderBlockFlow (or force them
into a hash), but during this transition both classes will
have rare data structures.

Review URL: https://chromiumcodereview.appspot.com/24079007

git-svn-id: svn://svn.chromium.org/blink/trunk@157928 bbb929c8-8fbe-4397-9dbb-9b2b20218538