factor out doubled logic inside GameEngine::Game into a Player class
update GameEngine methods to work correctly with new Player class
fix specs to correctly test with the new Player class