Clean up throw statements.

Never throw plain strings.
Improve CanvasView constructor.

Support canvas / size arguments, but not both together, and throw exception if both fail.