Added a seperate game state machine class, gamestate enum and updated main.cpp to reflect changes