Re-work rendering so Environment creates own canvas.

Environment creates a canvas and returns it in the render()
method, allowing it to be appended to the screen.

This way Environment can be in control of things like the
size of the canvas.
Use columns and rows in environment