Sprite: Add text as a material.

Since we can't exactly retexture text (yet), this is close enough. We'll
probably want two Sprite constructors later if we keep it in.

Also bump the cabal version gently.
Particles: Provide a traversal for digging into the individual sprites.