Bug 838642 - Introduce nsFrameList::StartRemoveFrame/ContinueRemoveFrame that can be used in concert to remove a frame in O(1) time from a set of frame lists when its exact frame list is unknown.  Use them to make nsContainerFrame::StealFrame O(1).  r=bzbarsky
Bug 838642 - Remove nsContainerFrame::RemovePropTableFrame which is now unused.  r=bzbarsky
Bug 838671 - Make nsBlockFrame::RemoveFloat O(1) and make it just do the frame removal bit and let DoRemoveOutOfFlowFrame do the Destroy part (with the intent of making RemoveFloat reusable for other code).  r=bzbarsky
Bug 838679 - Make nsMenuFrame::RemoveFrame not use DestroyFrameIfPresent.  r=bzbarsky
Bug 838706 - Remove Destroy/RemoveFrameIfPresent O(n) methods. All consumers are now using Start/ContinueRemoveFrame instead which are O(1).  r=bzbarsky
Bug 838688 - Make ReparentFloats/CollectFloats not require a priori knowledge of which child list a float is expected to be on.  r=bzbarsky
Bug 838688 - Optimize CollectFloats by doing an early return if this block doesn't have any floats.  r=bzbarsky
Bug 840818 - Simplify PullFrameFrom when the last frame was removed from an overflow list (avoiding an assertion).  r=bzbarsky
Bug 843332 - Make PullFrame drain the overflow list before calling PullFrameFrom that can then be simplified to only deal with mList/mFrames (should be minor perf win too).  r=bzbarsky
Bug 843332 - Don't pass the nsBlockReflowState to PullFrameFrom that doesn't use it.  Add some assertions. r=bzbarsky
Bug 843332 - Pass 'false' to ReparentFloats since we only added one frame ('true' only works because the added frame never has any siblings in this case).  r=bzbarsky