clear() -> removeAll().
Added a gradient filled text test.
Bitmap contexts & data must be manually freed.

I'm also a little concerned that this allocates a buffer that's the size of the
entire canvas, regardless of the size of the text being rendered into it. While
this avoids any pesky edge cases with text rendering outside its bounding box,
it is a pretty big hammer with which to solve that problem. If someone was
rendering 100x15 text into a 640x480 canvas, we're creating a 640x480 canvas to
use as the mask.

Anyway, I'll leave this as is until someone reports a performance bug and worry
about it then.