Add support for createRadialGradient.
Fix race condition with fillText/strokeText.

This commit fixes the race condition where if you executed fillText or
strokeText more than once you would be using the previously scaled font
size property.

Let's consider this example:
ctx.font = '12pt Tahoma';
ctx.fillText('Hello', 0, 0); // ctx.font changes to ratio * font_size
ctx.fillText('Hello', 0, 0); // ctx.font changes to ratio^2 * font_size

The first fillText would be rendered with ratio * font_size, but since
the font size property stays multiplied, on the next execution it will
be multiplied again, causing a further multiplied version to appear.

The solution employed —since canvas works this way and you can't
explicitly set a font with a fillText call— is to multiply the font size,
execute the fillText function and then divide by the ratio. This way,
the font size stays intact.
add tests for font scaling and canvas scaling