Bug 888499 - Mark frames as dirty in a threadsafe way when imgFrame::ImageUpdated is called on them, and clear that dirty bit when we're drawing. r=seth
Bug 795737 - To avoid Cairo assertions, call Flush when we MarkDirty too, because we can draw locked images, which adds snapshots to the Cairo surfaces. r=Bas
Bug 717872 - Store a frame's raw image data pointer beside its imgFrame pointer so we can access it without having to lock the frame. r=seth

This patch makes us store imgFrames in FrameBlender with a new sort-of-tuple,
FrameDataPair, that is smart enough to be able to lock and unlock imgFrames,
and can be transparently cast to an imgFrame, but doesn't do too much else.
The alternative, storing a separate array of uint8_t pointers, seemed too
complicated.
Bug 717872 - Remove the imgFrame* helpers from FrameBlender now that we always have raw data pointers. r=seth
Bug 717872 - Don't change the content of mFrames, even when it'd be faster. r=seth
Bug 717872 - Make blending functions take const source parameters so it's a little less likely that we modify things in mFrames again. r=seth