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

r? @glennw @cgaebel
I think this would be clearer as:

        if (self.base.flags.is_float() ||
            self.formatting_context_type() == NonformattingContext) &&
           !self.base.flags.is_absolutely_positioned() {