Beginning of separating the grid from canvas.

No changes to canvas (other than renaming from grid > canvas) this change only
creates teh GridObject.
Separated model from canvas; fixed index out of bounds in undo/redo.

1. Previous change created the GridModel, this finishes up that change
   by moving CanvasView to using the GridModel rather than maintaining
   grid state itself.

2. I've noticed a couple of times an index out of bounds issue during
   undo / redo, I think this might be due to not capping the iteration
   through the grid on the grid width / height. Not 100% sure that this
   was the cause, but seems likely.