Split state up into game state and tool state. - Grid, cursor etc all live in game state. - Mouse state, key state all live in tool state. This will enable undo functionality to be built onto game state.