Refactor angle handling code

Represent angles as radians, with conversions for turn and degrees.

Basic arithmetic on angles, for better type safety

Better type safety in HSLA <-> RGBA conversion
Refactor context transformations

A single AST node represents all transformations of the
DrawingContext. The previous design used distinct AST nodes for each
distinct transformation. This design requires vastly less repetition.