pull drawing responsibilities out into separate class.

that's now two classes that are totally untested. that seems weird to
me, but i have no idea how to write tests against the interaction layer,
and i only have vague notions about to test canvas stuff :/ :/ :/