Updated renderers to accept a view

The reason for this commit is to allow support for previously created
canvases to be specified as views.

The major usecase here is Ejecta, who's primary screen canvas is always
obtained through document.getElementById('canvas'); Thus, creating a
canvas using document.createElement('canvas') would only make an
offscreen canvas which wouldn't be visible.

This commit maintains backwards compatibility since specifying a canvas
is completely optional, and if none is specified, it falls back to
previous behaviour.