Elements with negative margins do not avoid floats when appropriate.

When an element is replaced or has an overflow clip it should avoid floats
even if a negative margin wants to pull it back onto the floats.
http://www.w3.org/TR/CSS2/visuren.html#floats: "The border
box of a table, a block-level replaced element, or an element in the normal flow
that establishes a new block formatting context (such as an element with
'overflow' other than 'visible') must not overlap the margin box of any floats
in the same block formatting context as the element itself."

Simplify and correct the function that looks after this. We always want to
position the element after any floats so we always take the greater of the
border/padding + margin or the offset required to avoid floats. If there is
no offset required to avoid floats then it's ok to let the negative margin
pull the element back over the start edge of its containing block.

BUG=401592

Review URL: https://codereview.chromium.org/449113002

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