How can I animate colors spreading over an object?
I set up a quick test and the way I would do it is to use the Build modifier.

Create a 3D mesh of the area to be coloured, remove any vertices to make it 2D. If you do not do it like that I have found the Remesh modifier either does not work or produces strange results.

Apply a Remesh modifier set to create blocks. This creates a "pixelated" mesh but you can tweak the Octree depth to de-pixelate it. Apply this modifier, as we need direct access to the new geometry.

Tab into Edit mode and select all ('a') then position the cursor at the location you want the colour to spread from. From the Mesh menu select "Sort Elements" and select "Cursor Distance". 

Tab out of Edit mode and add a Build modifier, set the duration and hit play.

The mesh will build itself one face at a time spreading from your sorted start location.

If that solution does not produce a neat enough solution then I would suggest a black &amp; white animation as a factor mask in Nodes. Or you could use Dynamic paint and "paint" the colour with another object.