layout: Incrementalize reflow of block formatting contexts impacted by floats, and make float placement idempotent.

r? @glennw @cgaebel
Is calling `is_float` twice really that expensive? I feel like this function should "do one thing" and return nothing instead of `is_float`.