Put all code in module, not just setup
Don't pass canvas into GridModel

* Means GridModel doesn't have to understand canvas.  Just give it colWidth and rowHeight pre-calculated.
No need to pass canvas into SnakeModel
Hide gridBox.grid.  Get boxes with getBox()
Add GridView for rendering
Add fns to GridBox to set boxes as food/wall etc
Instantiate GridView and pass to GridModel
Replace render/manual box setting w calls to GridBox fns
Make randomBox() into randomEmptyBox

* Split out separate fn to just grab any random box
No need to store rows and cols on grid
Rm unused code
Make accidental global local
Stop gridModel being global

* Pass into snake constructor.
Move as much of snake to proto as possible

* Makes constructor way easier to read.
Remove unused directions var
Move randomEmptyBox to GridModel proto
Move wall setup code to init fn
Make gridModel responsible for creating new food
Stop snake being global.
Stop canvas being global