Move levels
Inversion of control in snake moving and collisions
Get basic level functionality working again on client
Move snake controls to separate object
Move some shape painting logic to ShapeGenerator